vue3出来几个月了,项目成功使用defineComponent和class两种模式踩坑,已经上线。我有空整理一下大概的变化和一些心得。因为已经成功踩坑应该比较全面了。vue3.0的新特性如下:1、vue3使用ES6中的Proxy替代vue2中的Objest.defineProperty。原因是Objest.defineProperty只是被监控对象中的每一个属性,而Proxy是代理的整个对象,这也是vue3这次改动的最大亮点之一(具体实现建议手动挖掘二)这个。$set(this.param,'c','西门庆')//vue2这段代码在vue2里应该很熟悉,在vue3里就不是了。2.Vue3这次采用了compositionAPI(组合API)模式,所有的代码都在setup中返回,而vue2中使用的是OptionsAPI(这个特性的改变其实是改变开发者的习惯,从规范的开发vue2的template到js的开放开发,在vue2中每一部分代码都严格限制在每一部分,比如定义方法只能写在methods中,而vue3更加自由,其实是习惯的改变。)3.提供更好的tree-shaking,即在打包和构建过程中移除。参考代码(tree-shaking最早是基于ES6打包工具Rollup,webpack3有自己的功能)4.更好的Typescript支持。地球人都知道在vue2中使用typescript不是很容易。即使结合成功,也还是会出现一些小问题。问题比较难处理,游老师在视频中也说过,这个改动解决了vue2在大型前端项目开发中难用的问题。当然,在vue3中使用typescript还是需要用户花费大量的时间。学习(在vue3中使用typescript可以选择defineComponent或者class模式,class模式是typescript的原貌)5.Vue3进行了VirtualDOM重构(vue2更新时会遍历整个组件,如果组件比较大,则遍历消耗会跟着增加),添加patchflag优化静态树(具体内容自己操作看编译后的内容)6.删除filterfilter,建议调用方法或者计算属性替换filter7,全局方法添加方法替换,vue2中使用Vue.property.xxx给this添加全局方法,vue3使用config.globalProperties.xxx添加8,vue实例化用vue3的createApp9替换newvue,添加vite创建项目,实现原理是利用ES6import的特性发送请求加载文件,拦截这些请求,做一些预编译,省去冗长的打包webpack10时,图形界面创建项目vueui11,修改vue2只支持单根节点,vue3可以使用多根节点
