# vue
# vue基础
- el, 限制了vue接管DOM的一个范围
 - 前端组件化, 提高复用和后期的可维护性,每个组件其实就是页面上的一个区域
 - vue生命周期函数, 就是vue实例在某一个时间点会自动执行的函数
- 初始化vue实例时,首先会初始化事件和生命周期,做一个基础的初始化,之后会调用beforeCreate, 之后会处理一些外部的注入和数据绑定,这一步vue实例初始化完成,会调用created, 之后会询问vue实例是否有el选项,即挂载点
 
 - 组件, 全局组件, 局部组件
 - vm, 指vue实例对象
 - 以$开头的属性,是vue的实例属性
 - 计算属性与方法
- 计算属性会基于他们的依赖进行缓存,只有依赖发生改变,他们才会重新求值
 - 而方法在每次触发重新渲染时,都会重新求值
 - 如果没有缓存,我们将不可避免的多次执行计算属性的getter,而这个计算属性性能开销又比较大,那我们将会浪费很多性能
 - 计算属性的 getter 函数是没有副作用 (side effect) 的,这使它更易于测试和理解。
 
 - vue侦听器
- vue 通过watch选项,来响应数据的变化
 - 使用 watch 选项允许我们执行异步操作 (访问一个 API),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的
 
 
# vue最佳实践
# 如何利用vue+webpack提升代码效率---精简化,高效化
- 化繁为简的watch, 字面量名称
 
immediate: true, //创建组件时,立马执行一次
value: {
      handler: 'doSomething',
      immediate: true
    }
- render函数的妙用
- vue推荐在绝大多数情况下使用template创建html,但有一些场景我们需要js完全编程的能力,这就是render函数,它比template更接近编译器
 - render函数的优点:
- ta更接近编译器
 - 使代码精简
 - 可以渲染标签,并添加进虚拟DOM中
 
 
 - 全局组件引入
- webpack的require.context() 批量引入
 - 建立一个common文件夹,存放所有需要全局引入的组件
 
 - 总路由动态引入,并实现懒加载,做路由分区,方便业务管理
- 把不同的业务分成不同的块,然后在总路由中进行引入
 
 
# vue自定义插件库及npm集成
- vue插件封装
- 插件与组件的关系
- 组件是对某功能或某模块的封装,如alert,loading
 - 插件是对一系列组件的封装,如vuex, vue-loader
 - 关系:插件可以封装组件,组件可以暴露数据给插件
 
 - 插件的优点
- 开箱即用
 - 功能比组件更强大,更丰富
 - 可全局引入,使用方便
 - 可以打包,脱离项目存在
 
 - vue插件分类
- install, vue实例, mixin, directive
 - 可以添加全局方法或属性,如vue-element
 - 可以添加全局资源:指令/过滤器/过渡等,如vue-touch
 - 通过全局minin方法添加一些组件选项,如vuex
 - 添加vue实例方法,通过把它们添加到Vue.prototype上实现
 
 
 - 插件与组件的关系
 - 集成到npm
 - 插件优化
 
# vue响应式原理
← react项目经验总结 vue基础 →