一、VUE2.0和3.0的优缺点
2.0优点:可以兼容IE9及以上版本
3.0优点:
composition api相比较属性方法,有着更强的代码组织性和复用性
监听方式升级,在代码方面,可以规避一些未知的数据绑定和渲染问题,提升开发效率
重构了virtual DOM,体积更小,组件渲染决定权交与组件,使用方式更灵活,性能更好
底层使用ts,增加数据类型强校验,可以使用ts功能,增强代码的可读性和可维护性
新的构建工具支持(vite 新一代构建工具,速度极快,引领趋势)
打包体积更小、初始渲染速度、开发热更新速度、内存占用、性能优化等
二、组件化是否必须用3.0?
不一定,如果不考虑IE兼容性问题,推荐使用3.0
Vue 3.0 与新一代前端构建工具 Vite 绑定,相比2.0的构建工具,大型工程,启动、热更新、构建均提效明显,Vite官方默认只支持 Vue 3.0,Vue2.0使用时需要引入非官方插件 vite-plugin-vue2,但是没有覆盖到所有的场景(有坑)
vue3.0与vue2.0 对应的官方默认构建工具 Vite 与 @vue/cli 对比
a、示例 Hello world 工程 -- 运行机器 MacBook Pro (16-inch, 2019)
工具 | 冷启动 | 热更新 | 构建 |
---|---|---|---|
Vite | 194ms | 29ms | 4.87s |
@vue/cli | 2399ms | 191ms | 9.00s |
注:由于 vite 将原生编译交给浏览器,此处热更新统计的为变化文件传输时间,@vue/cli 的热更新统计的为变化文件编译及依赖树更新的时间
b、示例 中等复杂工程对比,来自开源项目,35个页面
工具 | 冷启动 | 热更新 | 构建 |
---|---|---|---|
Vite | 15122ms | 101ms | 47.39s |
@vue/cli | 58328ms | 788ms | 60.02s |
三、其它测评
参考文档;https://segmentfault.com/a/1190000041263260
3、2.0升级到3.0的成本
1)2.0到3.0的升级,如果完全使用vue3.0的语法,90%以上的代码需要重构;
2)vue相关框架也存在一些非兼容的变更,例如Vue Router、vuex
3)如果不考虑语法迁移,重点要考虑一些依赖组件库的破坏性,需要升级支持vue3.0的组件,并且做相应的组件库使用调整
- 采用Vue服务端渲染 Nuxt 的项目,暂时处于 beta 版本
5)3.0版本不是很稳定,最近十几天也处于频繁更新的状态,而2.0已经超过1年没有发布新版本了
6)衍生框架如微前端等默认支持2.0,对3.0的支持力度不高
详见官方说明:https://v3.cn.vuejs.org/guide/migration/migration-build.html#overview
四、结论概括
功能实现方面,2.0与3.0是相互可替代,不存在3.0实现的功能2.0无法实现的场景;
3.0的性能及新开发范式支持相对2.0有较大提升,开发效率及程序性能均会提升
3.0不支持IE11,3.0的能力生态补齐中,目前较2.0存在差距
3.0取代2.0的预计,由于2.0项目非常多,预计两版本的使用会较长时间并存
3.0与2.0项目无法兼容,2.0升级到3.0成本比较大,除工程本身升级外,还依赖三方库提供3.0版本
五、建议
如支持IE11非必须,新项目采用 vue3.0 技术栈,打造 vue 3.0 组件库;
目前已有2.0工程升级到3.0成本高、有风险,不建议升级
如需支持IE11,采用Vue 2.0