sunmaobin / sunmaobin.github.io

blog
https://github.com/sunmaobin/sunmaobin.github.io
174 stars 11 forks source link

VUE 3.0 学习探索入门系列 - 纠结要不要升级到Vue3.0?该如何升级?(5) #77

Open sunmaobin opened 3 years ago

sunmaobin commented 3 years ago

闲聊两句

从 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个特性解决的问题目前也不是很致命,以至于让我对自己革命!

  1. 对 TypeScript 的友好支持。在当前 Vue2.x 中,那些喜欢 Ts 的人,也基本习惯了当前的语法 示例,虽然要额外引入一些包,加一些装饰器,但也基本能用
  2. 新增 Composition API。新的 API 兼容 Vue2.x,只需要在项目中,单独引入 @vue/composition-api 这个包就可以,就能够解决我们目前 Vue2.x 中存在的一些极个别难题 什么难题?看这里

同时,如果我直接升级到 Vue3.x,我要做的事情会更多,比起我面临的问题,可能带来的问题更多,何必呢?

  1. 当前项目生态中的几个库都面临巨大升级,以及升级后的诸多坑要填,比如:vue-routervuexElementUI/ViewUI/AntDesignVue 等。这些生态在 2.x 上都已经很成熟,但是在 3.x 上还有很多长路要走,很多坑要踩。
  2. Vue3.x 没有了默认对象 export default,当前项目中所有直接使用 Vue.xxx 的语法全部得重写,有些都已经沉淀到公司底层库中了,这刀子动起来风险可不小。
  3. 目前对一个横向小组来说,大大小小维护几十个项目,全面改一次,测试一次,这周期也很长,还不包括全部门、全公司的集体升级!
  4. 测试团队需要全面自检和升级,自动化脚本可能需要重新调整,你怎么说服他们支持你?
  5. 发布平台的脚本,包括 CI/CD 等可能面临全面更新,以及也可能面临新老流程兼容的问题解决。

再来聊下为啥我觉得 Vue3.x 有必要用!

  1. 兼容 Vue2.x 95% 以上特性,所以其优点全部得到继承,比如:上手快、门槛低。
  2. 对 Ts 支持更加友好,更加迎合了行业趋势、技术潮流
  3. Composition API 的添加,势必会让一部分 React 用户转投过来(个人观点,边走边看吧),以后群体会更大,生态更丰富
  4. 到目前为止不用再担心它还是一个个人项目,如果我是 Evan You,哪天真的没法通过 Vue 维持生计了,我会跟 Google 或者 Microsoft 去聊聊收购的事情(这么大的市场蛋糕,我不信没人要),对于用户来说影响不大

所以整理下我的结论

  1. 如果是新团队、新项目,当 Vue3.x 正式 Release 后,生态跟上来了(半年时间),可以直接上(不要怕学习 Ts)
  2. 成熟团队,前端基础架构也成熟,不要忙着升级,等 Vue3.x 正式 Release 半年后,可以先尝试使用 Vue2.x + @vue/composition-api 过渡,不建议断崖式升级
  3. 不建议框架从 Vue2.x 直接升级 Vue3.x,而是新起炉灶直接使用 Vue3.x 打造新的项目工程模板

最后说下我们团队的计划安排

初步的思路,希望给大伙一点思路:

  1. 半年内,按兵不动,继续 Vue2.x,同时等待 @vue/composition-api 发布 v3.2.0 版本以上
  2. 项目基础模板框架升级,基于:Vue2.x + @vue/composition-api,支持 Vue3.x 的新语法,同时制定严格的 Composition API 使用规范
  3. 一年后,基于 Vue3.x 搭建新的基础框架(全面Ts)!不会基于老的框架升级!同时制定详细的 Vue3.x 模板开发规范
  4. 从此以后,老的项目依然使用 Vue2.x+ @vue/composition-api 维护直至退役,或者完全被新的 Vue3.x 框架替代成全新的工程

每次技术变革对自己也都是革命

以下是我历史上的几次技术变革(java 到 javascript):

  1. servlet -> spring -> spring mvc
  2. jsp --> jquery + bootstrap
  3. jquery --> avalon(require.js + gulp)
  4. avalon --> vue2.x(webpack)
  5. vue2.x -->

至今还记得 jQuery 的口号:write less,do more,很情怀!于是又打开 好久没去的 jQuery 官网,嗯,还在!

Vue3.x 与我无关者

我这里是说的有这么一群人,他们在心底会说:

Vue2.x 用的好好的,我干嘛要自己没事找事,学习Vue3?花那么多心思升级 Vue3?

这种态度代表了这么一群人:

我想说的是对于新技术或者新事物,我们需要保持敏感。他的出现一定是有他的道理,他之所以存在一定有他的价值。

我们肯定不能盲目追随,但是我们也不能自我封闭。所以,对于 Vue3.x 或者其他新的技术,我更希望大家多了解一下,然后再做选择。

但是有一个千古不变的道理:不思进取,不进则退,在这些年体现的更明显。

比如:

最后,如果朋友们喜欢就点个赞👍,我会继续写下去。

(全文完)