Vue简介
1.什么是Vue.js
Vue.js是一款用于构建用户界面的渐进式框架;Vue被设计为自下向上逐层应用。Vue.js的核心库只关注视图层。Vue的目标是通过尽可能简单的api实现响应的数据绑定和组合的视图组件。
2. MVVM模式
MVVM是Model View ViewModel的简写,实质上是MVC的改进版,目的是将其中View的状态 以及行为抽象化,将视图UI和业务逻辑分开。ViewModel可以取出Model的数据,同时帮助处理View中由于需要展示内容而涉及到的业务逻辑。
优点:
- 低耦合 View可以独立于Model的变化和修改
- 可重用性 可以将一些视图逻辑放在一个ViewModel中,让很多View重用这段视图逻辑
- 独立开发 开发者专注于业务逻辑和数据开发,设计人员专注于页面设计
- 可测试 测试可以针对ViewModel来写
MVVM模式的组成
- 模型:模型是指代表真实状态内容的领域模型,或指代表内容的数据访问层(以数据为中心)
- 视图:视图就是用户在页面看到的结构、布局、外观
- 视图模型:视图模型是暴露公共属性和命令的视图抽象,MVVM模式中只有一个绑定器,在视图模型中绑定器在视图和数据绑定器之间进行通信
MVVM中的双向绑定
在MVVM架构下,View和Model没有直接的联系,而是通过ViewModel进行交互;Model和ViewModel之间的交互是双向的,因此View数据的变化会同步到Model中,而Model数据的变化也会立即反映到View上。ViewModel通过双向数据绑定把View层和Model层连接起来,而View和Model之间的同步工作完全是自动的。
3. 第一个Vue实例
首先去官网下载vue.js,因为我们第一个实例是简单demo,所以不需要通过脚手架或者其他复杂工具来构建项目,仅仅只需要Vue.js和一个html
当然我们也可以通过cdn引入Vue.js
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>` 复制代码
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello Vue</title> <script src="../easy_start/js/vue.js" type="text/javascript" charset="UTF-8"></script> </head> <body> <div id="demo"> {{message}} </div> <script type="text/javascript"> var demo=new Vue({ el:'#demo', data:{ message:'Hello Vue' } } ); </script> </body> </html> 复制代码
这里面有一些Vue的指令使用后面会专门讲到,然后打开我们的html会看到
4.实例的生命周期
- beforeCreate() 创建前,在数据观测和初始化时间还未开始时被调用
- created() 创建后,在完成数据观测、属性和方法的运算、初始化事件后被调用,$el属性还没有显示出来
- beforeMount() 载入前,在载入开始前被调用,相关的render函数首次被调用;实例已完成以下配置:编译模版,把data中的数据和模版生成.html,但是此时还没有挂载.html到页面上
- mounted() 载入后,在el被新创建的vm.$el替代,并挂载到实例上后被调用。实例已完成以下配置:用上面编译好的.html内容替换el属性指向的DOM对象,此时模版中的.html被渲染到.html页面中,此过程中进行Ajax交互
- beforeUpdate() 更新前,在数据更新前被调用,发生在虚拟DOM重新渲染和打补丁前。
- updated() 更新后,在由于数据更改导致的虚拟DOM重新渲染和打补丁后被调用。调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作(但是为了防止更新无限循环还是避免在此期间更改状态)
- beforeDestroy() 销毁前,在实例销毁前被调用,实例仍然完全可用
- destroyed() 销毁后,在实例被销毁后被调用,调用后所有的事件监听器会被移除、所有的子实例也会被销毁。