VUE 3.0 学习探索入门系列 - 纠结要不要升级到Vue3.0?该如何升级?(5)
闲聊两句
从 Vue 3.0 有消息到现在也已经有1年多时间了,2019年 Evan You 在每次会议上肯定会提 Vue 3.0 的进展和一些特性,当然大家也是怀着个人崇拜,满怀期待的等着尤大的大作!
但是,随着等了一年多了还没正式发布,一直到现在 2020.3.21,我慢慢的感觉没啥期待了,也开始慢慢的倦怠了,热情感觉也没那么强烈了。
我只所以写这个 VUE 3.0 学习探索入门系列,目的也就是希望我在我还有这么一点点兴趣的时候,试图去快速的、全面的了解 Vue 3.x,带着我的兴趣去窥探它。要不然等我完全没兴趣的时候,Vue3.x 再出来,我可能就只是在用到的时候,被动的去学习它、使用它,它就纯粹只是我的工具而已了。
好了,言归正传。通过持续对 Vue3.x 的关注,以及近段时间的深入研究,今天就来跟大家分享下,在我看来:大家有没有必要升级到 Vue3.0?如果要升级,该如何升级?
Vue2.x 没必要升级!Vue3.x 有必要用!
首先我来解释下,为什么我个人觉得没 Vue2.x 必要升级!
就目前我对 Vue3.x 的了解来看,只有 两个明显特性 对我有吸引力,但是这2个特性解决的问题目前也不是很致命,以至于让我对自己革命!
-
对 TypeScript 的友好支持。在当前Vue2.x中,那些喜欢 Ts 的人,也基本习惯了当前的语法 示例,虽然要额外引入一些包,加一些装饰器,但也基本能用 - 新增
Composition API。新的 API 兼容Vue2.x,只需要在项目中,单独引入@vue/composition-api这个包就可以,就能够解决我们目前Vue2.x中存在的一些极个别难题 什么难题?看这里
同时,如果我直接升级到 Vue3.x,我要做的事情会更多,比起我面临的问题,可能带来的问题更多,何必呢?
- 当前项目生态中的几个库都面临巨大升级,以及升级后的诸多坑要填,比如:
vue-router、vuex、ElementUI/ViewUI/AntDesignVue等。这些生态在 2.x 上都已经很成熟,但是在 3.x 上还有很多长路要走,很多坑要踩。 -
Vue3.x没有了默认对象export default,当前项目中所有直接使用Vue.xxx的语法全部得重写,有些都已经沉淀到公司底层库中了,这刀子动起来风险可不小。 - 目前对一个横向小组来说,大大小小维护几十个项目,全面改一次,测试一次,这周期也很长,还不包括全部门、全公司的集体升级!
- 测试团队需要全面自检和升级,自动化脚本可能需要重新调整,你怎么说服他们支持你?
- 发布平台的脚本,包括 CI/CD 等可能面临全面更新,以及也可能面临新老流程兼容的问题解决。
再来聊下为啥我觉得 Vue3.x 有必要用!
- 兼容
Vue2.x95% 以上特性,所以其优点全部得到继承,比如:上手快、门槛低。 - 对 Ts 支持更加友好,更加迎合了行业趋势、技术潮流
- Composition API 的添加,势必会让一部分 React 用户转投过来(个人观点,边走边看吧),以后群体会更大,生态更丰富
- 到目前为止不用再担心它还是一个个人项目,如果我是 Evan You,哪天真的没法通过 Vue 维持生计了,我会跟 Google 或者 Microsoft 去聊聊收购的事情(这么大的市场蛋糕,我不信没人要),对于用户来说影响不大
所以整理下我的结论
- 如果是新团队、新项目,当
Vue3.x正式 Release 后,生态跟上来了(半年时间),可以直接上(不要怕学习 Ts) - 成熟团队,前端基础架构也成熟,不要忙着升级,等
Vue3.x正式 Release 半年后,可以先尝试使用Vue2.x + @vue/composition-api过渡,不建议断崖式升级 - 不建议框架从
Vue2.x直接升级Vue3.x,而是新起炉灶直接使用Vue3.x打造新的项目工程模板
最后说下我们团队的计划安排
初步的思路,希望给大伙一点思路:
- 半年内,按兵不动,继续
Vue2.x,同时等待@vue/composition-api发布v3.2.0版本以上 - 项目基础模板框架升级,基于:
Vue2.x+@vue/composition-api,支持Vue3.x的新语法,同时制定严格的Composition API使用规范 - 一年后,基于
Vue3.x搭建新的基础框架(全面Ts)!不会基于老的框架升级!同时制定详细的Vue3.x模板开发规范 - 从此以后,老的项目依然使用
Vue2.x+@vue/composition-api维护直至退役,或者完全被新的Vue3.x框架替代成全新的工程
每次技术变革对自己也都是革命
以下是我历史上的几次技术变革(java 到 javascript):
- servlet -> spring -> spring mvc
- jsp --> jquery + bootstrap
- jquery --> avalon(require.js + gulp)
- avalon --> vue2.x(webpack)
- vue2.x -->
至今还记得 jQuery 的口号:write less,do more,很情怀!于是又打开 好久没去的 jQuery 官网,嗯,还在!
Vue3.x 与我无关者
我这里是说的有这么一群人,他们在心底会说:
Vue2.x 用的好好的,我干嘛要自己没事找事,学习Vue3?花那么多心思升级 Vue3?
这种态度代表了这么一群人:
- 不思进取,不求上进,很看重加班
- 工作只是生活所迫,并没有追求
- 很少参与技术分享,也很少总结写博客
- 拿来主义者,Ctrl+C/V 忠实执行者
我想说的是对于新技术或者新事物,我们需要保持敏感。他的出现一定是有他的道理,他之所以存在一定有他的价值。
我们肯定不能盲目追随,但是我们也不能自我封闭。所以,对于 Vue3.x 或者其他新的技术,我更希望大家多了解一下,然后再做选择。
但是有一个千古不变的道理:不思进取,不进则退,在这些年体现的更明显。
比如:
- 前4年,你告诉我不会用 jQuery,我会跟你说,实在抱歉...
- 前2年,你告诉我只会用 jQuery,我会跟你说,实在抱歉...
- 现在,你告诉我会用 Vue,我会问题:了解 Vue3 吗?没了解,实在抱歉...
- 明年,你告诉我只用过 Vue2.x,我会跟你说,实在抱歉...
最后,如果朋友们喜欢就点个赞👍,我会继续写下去。
(全文完)