vue.js精讲01
笔记及源码地址 : https://github.com/wll8/vue_note
01
- 2017-09-13
view
一个 mvvm框架(库),和 ag 类似。
比较小巧,容易上手。
mvc:
mvp
mvvm
mvx(mv*)
vue 和 ag 的区别。
不用纠结什么好,项目适合什么就用什么。
vue
简单
中文文档
指令: v-xxx
例子: html + json + vue实例
维护: 个人
适合: 移动
ag
上手难
英文文档
指令: ng-xxx
例子: 把所有属性和方法挂到 $scope 上
维护: 谷歌
合适: pc
共同点:
不兼容低版本ie
vue雏形
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
<div id="box">{{msg}}</div> <!-- html -->
<script>
var json={ /*json*/
el:'#box',
data:{
msg:'vue'
}
}
var c=new Vue(json); // vue实例
</script>
常用指令
指令: 扩展 html 标签功能,属性。
v-model 一般用表单元素 input 上。
注,教程失效部分:
v-repeat 已改为 v-for
$index 弃用,改为 `(value, index) in arr` 得到 index 变量。
$key 弃用,改为 `(value, key) in obj` 得到 key 变量。
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
<div id="box">
<input v-model="msg">
{{msg}} <br>
{{arr}} <br>
{{obj}} <br>
数组<hr>
<p v-for="value in arr">{{value}}</p>
下标,数组<hr>
<p v-for="(value, index) in arr">{{index}}{{value}}</p>
对象<hr>
<p v-for="value in obj">{{value}}</p>
key,对象<hr>
<p v-for="(value, key) in obj">{{key}}{{value}}</p>
</div>
<script>
var json={ /*json*/
el:'#box',
data:{
msg:'vue',
arr:[1,2,3],
obj:{a:1,b:2}
}
}
var c=new Vue(json); // vue实例
</script>
事件
所有事件都写在 methods 中。
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
<div id="box">
<button @click="show()">alert</button>
</div>
<script>
var json={
el:'#box',
methods:{
show:function(){
alert(1);
console.log(this.$el);
}
}
}
var c=new Vue(json); // vue实例
</script>
vue + bootstrap 实现 todolist
todolist也被认为是留言版。
在线 bootstrap ,引入 -alpha 或 -beta 版本js会报错。
https://cdn.bootcss.com/bootstrap/4.0.0-beta/js/bootstrap.js
Uncaught Error: Bootstrap dropdown require Popper.js
https://cdn.bootcss.com/bootstrap/4.0.0-alpha.4/js/bootstrap.js
Uncaught Error: Bootstrap tooltips require Tether
https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.js
正常使用。
相关源码
01.vue雏形
<script src="https://unpkg.com/vue"></script>
<div id="box">{{msg}}</div> <!-- html -->
<script>
var json={ /*json*/
el:'#box',
data:{
msg:'vue'
}
}
var c=new Vue(json); // vue实例
</script>
02.常用指令
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
<div id="box">
<input v-model="msg">
{{msg}} <br>
{{arr}} <br>
{{obj}} <br>
数组<hr>
<p v-for="value in arr">{{value}}</p>
下标,数组<hr>
<p v-for="(value, index) in arr">{{index}}{{value}}</p>
对象<hr>
<p v-for="value in obj">{{value}}</p>
key,对象<hr>
<p v-for="(value, key) in obj">{{key}}{{value}}</p>
事件<hr>
<button @click="show()">alert</button>
<button @click="add()">arr push</button>
v-show <hr>
<button @click="show_btn=!show_btn">显示隐藏</button>
<p v-show="show_btn">显示隐藏</p>
</div>
<script>
var json={ /*json*/
el:'#box', /*html元素*/
data:{ /*变量*/
msg:'vue',
arr:[1,2,3],
counter:0,
show_btn:true,
obj:{a:1,b:2}
},
methods:{ /*所有方法都放在里面,注意s*/
show:function(){
alert(1);
console.log(this.$el);
},
add:function(){
this.arr.push(1);
}
}
}
var c=new Vue(json); // vue实例
</script>
03.todolist
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css">
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.js"></script>
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.js"></script>
<script>
window.onload=function(){
new Vue({
el:'#box',
data:{
myData:[
],
username:'',
age:'',
nowIndex:-1, // 当前点击的数据
},
methods:{
add:function(){
this.myData.push({
name:this.username,
age:this.age
});
this.username='';
this.age='';
},
del:function(n){
if(n==-2){
this.myData=[];
}else{
this.myData.splice(n,1); // 删除数据中的第n位
}
}
}
})
}
</script>
<div class="conatiner" id="box">
<form role="form">
<div class="form-group">
<label for="username">用户名:</label>
<input v-model="username" type="text" id="username" class="form-control" placeholder="输入用户名">
</div>
<div class="form-group">
<label for="age">年 龄:</label>
<input v-model="age" type="text" id="age" class="form-control" placeholder="输入年龄">
</div>
<div class="form-group">
<input type="button" value="添加" class="btn btn-primary" @click="add()">
<input type="reset" value="重置" class="btn btn-danger">
</div>
</form>
<hr>
<table class="table table-bordered table-hover">
<caption class="h3 text-info text-center">用户信息表</caption>
<tr class="text-danger">
<th class="text-center">序号</th>
<th class="text-center">名字</th>
<th class="text-center">年龄</th>
<th class="text-center">操作</th>
</tr>
<tr class="text-center" v-for="(item, index) in myData">
<td>{{index+1}}</td>
<td>{{item.name}}</td>
<td>{{item.age}}</td>
<td><button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer" @click="nowIndex=index">删除</button></td>
</tr>
<tr v-show="myData!=0">
<td colspan="4" class="text-right">
<button class="btn btn-danger btn-sm" data-toggle="modal" data-target="#layer" @click="nowIndex=-2">删除全部</button>
</td>
</tr>
<tr v-show="myData.length==0">
<td colspan="4" class="text-center text-muted">
<p>暂无数据...</p>
</td>
</tr>
</table>
<!-- 模态框,弹出框 -->
<div role="dialog" class="modal fade" id="layer">
<div class="modal-content">
<div class="modal-header">
<button class="close" data-dismiss="modal"><span>×</span></button>
<div class="modal-title">确认删除{{nowIndex==-2 ? '全部' : ''}}么?</div>
</div>
<div class="modal-body text-right">
<button data-dismiss="modal" class="btn btn-primary btn-sm">取消</button>
<button data-dismiss="modal" class="btn btn-danger btn-sm" @click="del(nowIndex)">确认</button>
</div>
</div>
</div>
</div>
vue.js精讲01的更多相关文章
- vue.js精讲02
2017-09-17 笔记及源码地址 : https://github.com/wll8/vue_note vue 中的事件深入. 事件: @click/mouseover…事件简写: @ 如 @cl ...
- Vue 基础精讲
Vue 基础精讲 Vue 官方文档:https://cn.vuejs.org/v2/guide/ VUE 实例 每个组件都是一个 vue 的实例. 一个 vue 项目是由实例组成的. vue 实例上有 ...
- vue.js插件使用(01) vue-resource
本文的主要内容如下: 介绍vue-resource的特点 介绍vue-resource的基本使用方法 基于this.$http的增删查改示例 基于this.$resource的增删查改示例 基于int ...
- vue.js 精学组件记录
组件需要注册后才可以使用. Vue.component('my-component',{ template:'<div>这是组件内容</div>' }): 局部注册组件 var ...
- vue.js 精学记录
v-bind:class使用的方式: 1.对象与法::class="{'active':isActive}" 此时当isActive为true时,会拥有active 2.数组语法: ...
- Vue —— VueX精讲(1)
大纲 这一讲我们最主要的就是学习vue中的数据管理VueX,这个是一个大杀器 一.回顾一些Promise相关的东西 Promise 有几个比较重要的方法,最重要的还是有一个叫做all的方法,这个也是非 ...
- 第三章、vue基础精讲
3.1VUE实例 组件:全局组件,局部组件,vue的每个组件也是一个实例,有自己的实例属性和实例方法. 在console中调试vue,vm为vue的实例,凡是以$开头的都是vue的实例属性或者vue的 ...
- MVVM大比拼之vue.js源码精析
VUE 源码分析 简介 Vue 是 MVVM 框架中的新贵,如果我没记错的话作者应该毕业不久,现在在google.vue 如作者自己所说,在api设计上受到了很多来自knockout.angularj ...
- vue.js源码精析
MVVM大比拼之vue.js源码精析 VUE 源码分析 简介 Vue 是 MVVM 框架中的新贵,如果我没记错的话作者应该毕业不久,现在在google.vue 如作者自己所说,在api设计上受到了很多 ...
随机推荐
- python 某个目录下的所有文件列表
使用os.listdir() 函数来获取某个目录中的文件列表 import os names = os.listdir('somedir') 结果会返回目录中所有文件列表,包括所有文件,子目录,符号链 ...
- Spring源码阅读(四)
我们知道,在spring bean生命周期中,我们可以在不同阶段执行处理器或者方法,比如init-method,destroy方法,BeanPostProcessor接口等.那么这些处理器或方法的执行 ...
- mybatis源码解析8---执行mapper接口方法到执行mapper.xml的sql的过程
上一篇文章分析到mapper.xml中的sql标签对应的MappedStatement是如何初始化的,而之前也分析了Mapper接口是如何被加载的,那么问题来了,这两个是分别加载的到Configura ...
- MongoDB With Spark遇到的2个错误,不能初始化和sample重复的key
1.$sample stage could not find a non-duplicate document while using a random cursor 这个问题比较难解决,因为我用mo ...
- 解读 JavaScript 之引擎、运行时和堆栈调用
https://www.oschina.net/translate/how-does-javascript-actually-work-part-1 随着 JavaScript 变得越来越流行,很多团 ...
- php 网站301重定向设置代码实战案例
php 网站301重定向设置代码实战案例 301重定向就是页面永久性移走的意思,搜索引擎知道这个页面是301重定向的话,就会把旧的地址替换成重定向之后的地址. 302重定向就是页面暂时性转移,搜索引擎 ...
- idea 项目转 eclipse项目
接到一个很紧急的活,我很着急,也很兴奋,打开邮件一看,有点懵逼. idea项目.idea不熟啊,网上搜攻略.我做个总结,归根结底就是一句话. 下个idea,然后一步一步的安装好. 然后也是 ...
- 前端框架VUE----计算属性和侦听器
一.计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div> {{ message.split('').rev ...
- onclick或者其他事件在部分移动端无效的问题
最近开发碰到一个问题,大多数手机都可以正常访问点击,但是有部分手机onclick无效,不知道可能是什么原因?该如何解决? 我遇到的这个问题,实际不是onclick的原因,而是因为js里面包含es6的语 ...
- c# out ref parames的用法
out ref parames的用法(将值传递转换成引用传递) Out 一般用于返回多个值,在方法体中会清空out变量,侧重于一个方法有多个返回值得时候使用 Ref有进有出,可以在方法体外必须赋初值, ...