16.vue生命周期和对应能干的事情

  1. 创建的是数据代理和数据监测
  2. beforeCreate: datamethods还没被初始化
  3. created: datamethods已经被初始化好了,要调用methods方法或者操作data,最早只能在data
  4. beforeMount: 模板在内存中已经编译好,尚未挂载到页面中去
  5. mounted: 如果通过某些插件操作dom最早只能在mounted中,此函数执行完毕,表示vue实例被初始化完毕
  6. beforeUpdate: 此时页面中的数据是旧的,但data中的数据是新的,页面尚未和最新的数据保持同步
  7. Updated: 页面和 data 数据已经保持同步了
  8. beforeDestory: 此时实例上的 data methods、过滤器、指令都处于可用状态
  9. destoryed: 组件中的方法、数据、指令都不可用了

16.5 父子组件生命周期顺序

  1. 1.bfcreated->父created->父bfmounte->子bfcreated到子mounted->父组件挂载el.父mounted
  2. 其他更新之类的都是父子父这种流程

17.Vuex持久化

1.手动利用h5的本地存储

  1. 让state从本地存储localStorage和sessionStorage取值
  2. 在提交修改状态时,同时修改本地存储的值

这样state就会和存储一起存在并且与vuex同步

2.利用vuex-persistedstate插件

2.1 默认持久化所有的state

  1. 安装 npm install vuex-persistedstate —save运行时依赖
  2. 引入和配置 ```javascript import createPersistedState from “vuex-persistedstate”

const store =newVuex.Store({

// …

plugins: [createPersistedState()]

})

  1. 默认存储到localStorage<br />3.需要更改存储到sessionStorage,配置改为
  2. ```javascript
  3. import createPersistedState from "vuex-persistedstate"
  4. conststore = newVuex.Store({
  5. // ...
  6. plugins: [createPersistedState({
  7. storage:window.sessionStorage
  8. })]
  9. })

2.2 可以指定需要持久化的状态state

  1. import createPersistedState from "vuex-persistedstate"
  2. conststore = newVuex.Store({
  3. // ...
  4. plugins: [createPersistedState({
  5. storage:window.sessionStorage,
  6. reducer(val) {
  7. return {
  8. // 只储存state中的shopNum,val代表state
  9. shopNum: val.shopNum
  10. }
  11. }
  12. })]
  13. })

18.Question4: mutations 能执行异步代码吗?为什么?

不能,因为mutations更新state,是一个同步的更新过程,如果异步代码,会阻塞state的更新。
扩展:mutation和action的区别

  1. 1、流程顺序
  2. “相应视图—>修改State”拆分成两部分,视图触发ActionAction再触发Mutation
  3. 2、角色定位
  4. 基于流程顺序,二者扮演不同的角色。
  5. Mutation:专注于修改State,理论上是修改State的唯一途径。
  6. Action:业务代码、异步请求。
  7. 3、限制
  8. 角色不同,二者有不同的限制。
  9. Mutation:必须同步执行。
  10. Action:可以异步,但不能直接操作State

19 mapMutations 和mapState

mapMutations 其实跟mapState 的作用是类似的,将组件中的 methods 映射为 store.commit 调用

20.vue-loader是什么?使用它的用途有哪些?

vue文件的一个加载器,跟template/js/style转换成js模块。