Vue基础
简介
MVVM是什么?
MVVM是Model-View-ViewModel的缩写。MVVM是一种设计思想。Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。
在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。
ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。
Vue.js优点
Vue.js是一个轻巧,高性能,可组件化的MVVM库.它是MVVM模式,视图层和数据层的双向绑定,让我们无需再去关心DOM操作的事情,更多的精力放在数据和业务逻辑上去.
低耦合:
视图6(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的”View”上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
可重用性:
你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
独立开发:
开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
可测试:
界面素来是比较难于测试的,而现在测试可以针对ViewModel来写
易用灵活高效
数据绑定,指令,事件
引入
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
实例
最基本实例,其中el是必须的,是一个选择器
var app = new Vue({
el:''
})
数据绑定data
声明双向绑定的数据
访问Vue实例的属性
var app = new ({
el:'',
data:{
msg:''
},
methods:{
///
}
})
//访问el
app.$el
//访问methods
app.$methods
//访问data中的msg
app.msg
生命周期钩子
created 实例创建完成后调用,还没挂载到el上. —还没挂载
mounted el挂载到实例后. —刚挂载
beforeDestroy 实例销毁之前.主要用于解绑
运用例子:
<div id="app">
{{date}}
</div>
<script>
var app = new Vue({
el: '#app',
data: {
date: new Date()
},
mounted:function(){//挂载成功后进行每秒刷新1次当前时间
var _this = this;
this.timer = setInterval(function(){
_this.date = new Date();
},1000)
},
beforeDestory:function(){//销毁前清除定时器
if(this.timer){
clearInterval(this.timer)
}
}
})
</script>
文本插值和表达式
文本插值:
使用,将data中的数据显示
表达式:
只能是单个表达式,不能是语句
运算
{{6 + 6}}
三元运算
{{ 2>1 ? 'yes' : 'no'}}
JS:
{{Date.now()}}
过滤器
Vue尾部插入|,通常用于格式化文本,过滤规则是自定义的,通过给Vue实例添加filters来设置
{{ data.数据名 | 过滤器1}}
串联:
{{ data.数据名 | 过滤器1 | 过滤器2}}
过滤器的参数
{{date.数据表 | 过滤器1(a,b)}}
传入的第一二个参数是过滤器1中的第二三个参数
filters:{
过滤器1:function(val,a,b){
///对val进行操作 val是 data.数据名 传入的
}
}
指令和事件
v-text
解析文本和作用一样
例:
<p v-text="msg"></p>
<p>{{msg}}</p>
...
data{
msg:'msg'
}
v-html
解析html
例:
<div v-html="html"></div>
...
data{
html:'<h1>hello</h1>'
}
v-bind:
动态更新HTML元素上的属性,语法糖v-bind === :
例:
<p v-bind:title="title"></p>
<p :title="title"></p>
<p :class="active"></p>
...
data{
title:'title',
class:'active'
}
v-on
语法:v-on:事件=”方法”
其中方法挂载到vue实例用的methods属性内,并且是一个函数,函数内的this指向vue实例本身.
所以可以直接访问或修改data内的数据.
注意:不能用箭头函数,因为会改成this,也就是把this变成对象’methods’
简单例子:
<div id="app">
<button v-on:click="doSomething">点击我</button>
<p>{{msg}}</p>
</div>
<script>
var app = new Vue({
el:'#app',
data:{
msg:'this is a msg in data'
},
methods:{
doSomething:function(){
alert('你点击我了!')
alert(this.msg)
}
}
})
</script>
版权声明:本博客所有文章除特殊声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明出处 Roxas Deng的博客!