VUE复习总结(三)

49 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情

书接上文

10.vue路由的hash模式和history模式有什么区别?

  • 1.hash的路由地址上有#号,history模式没有
  • 2.在做回车刷新的时候,hash模式会加载对应页面,history会报错404
  • 3.hash模式支持低版本浏览器,history不支持,因为是H5新增的API
  • 4.hash不会重新加载页面,单页面应用必备
  • 5.history有历史记录,H5新增了pushState和replacestate()去修改历史记录,并不会立刻发送请求
  • 6.history需要后台配置

11.vuex刷新数据会丢失吗?怎么解决?

vuex肯定会重新获取数据,页面也会丢失数据

  • 1.把数据直接保存在浏览器缓存里(cookie localstorage sessionstorage)
  • 2.页面刷新的时候,再次请求数据,达到可以动态更新的方法监听浏览器的刷新数据,在刷新前把数据保存到sessionstorage里,刷新后请求数据,请求到了用vuex,如果没有那就用sessionstorage里的数据

12.vue的双向数据绑定原理是什么?

通过数据劫持和发布订阅者模式来实现,同时利用object.defineProperty()劫持各个属性的setter和getter,在数据发生改变的时候发布消息给订阅者,触发对应的监听回调渲染视图,也就是说数据和视图时同步的,数据发生改变,视图跟着发生改变,视图改变,数据也会发生改变。

  • 第一步:需要observer的数据对象进行递归遍历,包括子属性对象的属性,都加上setter和getter
  • 第二步: compile模板解析指令,把模板中的变量替换成数据,然后初始化渲染视图,同时把每个指令对应的节点绑定上更新函数,添加订阅者,如果数据变化,收到通知,更新视图
  • 第三步: watcher订阅者是observer和compile之间的通信桥梁,作用:
  1. 在自身实例化的时候忘订阅器内添加自己
  2. 自身要有一个update()方法
  3. 等待属性变动时,调用自身的update方法,触发compile这种的回调
  • 第四步:MM作为数据绑定的入口,整合了observer、compile和watcher三者,通过observer来监听自己的数据变化,通过compile解析模板指令,最后利用watcher把observer和compile联系起来,最终达到数据更新视图更新,视图更新数据更新的效果

未完待续……

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 13 天,点击查看活动详情