Vue-knowledge

Vue

一、Vue简介

1.vue

vue是一个动态构建用户界面的渐进式JS框架,渐进式是指按需加载相应的功能模块。

2. vue的特点

  1. 遵循MVVM模式
  2. 采用组件化模式,提高代码复用率
  3. 双向数据绑定
  4. 本身只关注用户界面,可以轻松引入第三方插件或其他库

3. 单页面与多页面

多页面 单页面
由多个完整页面组成 由一个页面和多个页面片段组成
页面之间的跳转是从一个页面跳转到另一个页面 页面的跳转是将当前页面片段删除或隐藏,将另一个页面片段加载显示,以此模拟页面的跳转
跳转后重新加载公共资源 跳转后不重新加载公共资源
URL:http://xxx/index1.html和http://xxx/index2.html 两个页面index1.html和index2.html URL:http://xxx/index.html#page1和http://xxx//index.html#page2 同一个页面index.html的两个页面片段page1和page2
页面之间切换加载慢,用户体验差 首页加载慢,但页面片段之间切换加载快,用户体验好
对搜索引擎优化友好 不利于搜索引擎的抓取
在web页面初始化时就加载相应的HTML、CSS、JS等,页面加载完成后不会因为用户的操作进行页面的重新加载,而是动态切换页面片段,实现用户与页面的交互
优化方案:根据当前页面的显示按需加载;根据路由拆分减少初始加载体积,(路由懒加载)在需要进入对应路由时再进行加载

单页面首页加载慢的优化方案:

  1. 资源加载优化:①减小资源大小,压缩代码;②优化资源加载时机,根据当前页面的显示按需加载,或根据路由拆分减少初始加载体积,(路由懒加载)在需要进入对应路由时再进行加载。
  2. 页面渲染优化:

4. MVVM和MVC

  • MVC模式:
    • Model-View-Control:Model用于存储数据,View用于处理数据显示,Control负责从视图读取数据,控制用户输入,并向模型发送数据。
  • MVVM模式
    • Model代表数据模型,可以定义数据修改和操作的业务逻辑;View代表视图层,负责将数据模型转换成用户界面展现出来;ViewModel是一个同步View和Model的对象
  1. Model,实现一个数据监听器observer:对数据对象进行递归遍历,利用Object.defineProperty()的getter和setter属性监听数据,数据变动时通知订阅者
  2. View,实现一个指令编译器compiler:根据指令模板替换数据,初始化渲染页面,并对每个指令对应的节点绑定相应的更新函数
  3. VM,watcher订阅者是observer和compiler的桥梁,能够订阅并收到每个属性变化的通知,执行指令绑定的回调函数,从而达到更新视图的目的

MVVM整合observer、compiler和watcher三者,通过observer来监听model数据的变化,通过Compile来解析编译模板指令,最终利用Watcher搭起Observer,Compile之间的通信桥路,达到数据变化=>视图更新;视图交互变化=>数据model变更的双向绑定效果。

  • MVVM和MVC的区别
    • MVVM实现了View和Model的自动同步,也就是当Model的数据改变时不需要操作Dom就可以自动更新View层,解决了MVC中使用大量Dom操作导致的加载速度慢、页面渲染性能低的问题。

5. 双向数据绑定原理

双向数据绑定就是说数据发生变化后会同步到视图中,用户在视图上的修改也会同步到数据中。

原理:采用数据劫持和发布订阅者模式实现的。主要是利用Object.defineProperty()的getter和setter属性对数据进行劫持,达到监听数据的目的,在数据发生变化时发布消息给订阅者,触发相应的监听回调。

6. v-model => 实现双向数据绑定

v-modelv-bindv-on的语法糖,在表单