vue.js是什么
vue.js也称为vue,读音/vju/
- 是一个构建用户界面的框架
- 是一个轻量级MVVM(Model-view-viewModel)框架,和angular,react类似,其实就是所谓的数据双向绑定
- 数据驱动+组件化的前端开发(核心思想)
- 通过简单的API实现响应式的数据绑定和组合的视图组件
指令以v-xxx开头
vue2.0和1.0相比,最大的变化是引入了Virtual DOM(虚拟DOM),页面更新效率更高,速度更快。
先瞅一瞅vue实例
var vm=new Vue({ //创建一个vue的实例传入json el:'#box',//指定关联的选择器 data:{//对象存储数据 sjd:'holle world', name:'tom' } });
<div id="box"> {{sjd}} div>
双向数据绑定
v-model 一般用于表单元素
用户名:<input type="text" v-model="name" /> <br> <p>我叫{{name}}p>
vue data中的name为空:且表单输入什么 p标签显示什么
常用的指令
v-for 对数组进行循环
new Vue({ el:'#angs', data:{ arr:[1,21,14,45,54], user:{id:12345,name:'秋香',age:25} } })
<li v-for="value in arr">{{value}}li>
循环user数组
<li v-for="value in user">{{value}}li>
如果想要索引
<li v-for="(user,index) in users">{{index+1}},{{user.id}},{{user.name}},{{user.age}}li>
v-on:事件名称
用来绑定事件的用法 可以用@代表来简写
例如:
点击按钮时向数组中添加一个元素
new Vue({ el:'#itany', data:{ //存储数据 arr:[12,21,215,46], }, methods:{ //存储方法 add(){ // arr.push(666);默认不能直接访问 this.arr.push(666);//使用this访问当前实例中的成员 this.fname(); } } })
<button type="button" v-on:click="add()">向数组中添加一个元素button>
v-show/v-if
用来显示或者隐藏元素,v-show是通过display实现,v-if是每次删除后再重新创建
例如:
点击按钮隐藏div
methods:{ change(){ this.flag=!this.flag; } }
<button type="button" v-on:click="change()">隐藏divbutton> <hr > <div class="" style="width: 100px; height: 100px; background-color: red;" v-show="flag"> div>
v-show是通过display设置none属性实现隐藏
<button type="button" v-on:click="change()">隐藏divbutton> <hr > <div class="" style="width: 100px; height: 100px; background-color: red;" v-if="flag"> div>
v-if是每次删除代码后再重新创建
事件的简写
v-on:click点击事件可简写为@click
事件对象$event
包含事件相关信息,如事件源,事件类型,偏移量
事件冒泡 (往上传播)
阻止事件冒泡使用 .stop
阻止事件默认行为.prevent
原生js方式,依赖于事件对象
事件修饰符 只触发一次 .once
关于键盘事件
简写 不需要事件对象 按键别名或按键的值
@keydown.ctrl或@keydown.13
属性
属性的绑定和简写
v-bind:属性='' 简写:src
v-bind可以直接访问vue中的数据,不需要使用{{}}
例如:
let vm = new Vue({ el:'#box1', data:{ src1:'//atts.w3cschool.cn/attachments/cover/cover_erlang.png?imageView2/1/w/64/h/64&t=1542019173', w:'200px',//宽度 h:'100px',//高度 }, methods:{ } });
src1为链接
<img :src="src1" :width="w" :height="h">
class和style属性
绑定单个样式 若要用多个样式,则用数组形式
<p :class="cc">我的世界p>
数组形式绑定多个样式
在vue的data中给样式赋值别名
let vm = new Vue({ el:'#box1', data:{ w:'200px',//宽度 h:'100px',//高度 cc:'aa', dd:'bb', ss:'vv', }, methods:{ } });
<p :class="[cc,dd,ss]">我的世界p>
json形式绑定
data:{ flag:true, num:-1, }
<p :class="{aa:true,bb:flag}">我的世界p> <p :class="{aa:num>0}">我的世界p>
变量引用json
data:{ holle:{aa:true,bb:true,vv:true} }
<p :class="holle">引用变量jsonp>