最近Vue.js大火,很多公司或者我的项目都在用Vue.js进行重构,从去年下半年公布开始,Vue.js3有什么扭转,在这里简略的说几点。
1、生命周期的扭转
(1)vue2中的beforeCreate和created被一个新增的setup生命周期函数代替,setup函数会在组件创立之前就执行。(2)beforeDestory和destoryed别离改名为beforeUnmount和unmounted。
2、性能方面的扭转
(1)数据劫持方面的扭转,由原来的Object.defineProperty()进行数据劫持,扭转为Proxy进行数据代理。因为proxy能够动静判断该数据是否为深层嵌套数据,而object.defineProperty()为遍历深层嵌套数据,导致了两者在数据劫持上产生了工夫上的微小差距。(2)打包策略,vue3反对了tree-shaking,排除任何未理论应用的代码,打包体积减小。因为打包后体积减小,页面加载文件所需的工夫也极大缩短。(3)diff优化,vue3中会对动态节点进行晋升,所有的动态节点在进行比照时不会被遍历。在进行节点比照时所需的工夫也大大减少。
3、新增的compositionAPI(组合式API)
解决了Vue2.X版本的optionsAPI不能解决的复用和可读性差的缺点。
新增了一个setup()生命周期函数,会在组件创立之前就执行。用setup生命周期代替beforeCreate和created。
const {ref,reactive,onMountend,toRefs} = Vue setup(props){ // 申明简略数据类型和简单数据类型 // 只能通过.value的模式获取数据 const refValue = ref(null); // 只能申明简单数据类型 // 申明的数据类型不能构造 // 申明的数据类型是proxy对象 const reactiveValue = reactive({state:0}); // 生命周期的应用(on加生命周期名字) onMountend(()=>{ // 在相应的生命周期内执行相应操作 }) // 该类型的数据不能解构,解构就会失去响应式特点 console.log(props); // 该办法将proxy对象转化成ref变量 toRefs(props); }
还能够将雷同的代码进行封装,进步了代码可读性。
4、v-model的变动
反对绑定多个v-model进行双向绑定。