vue2.7 尴尬的过渡版本
vue2.7 尴尬的过渡版本
这个版本太特殊了。值得讨论。本文章内容偏向于主观。
升级指南
综合态度
升级了。但是只能升级一点点。这是一个很尴尬的版本。
为什么要升级?
期望使用并享受 setup 组合式 api 带来的代码编写便利。
升级前的技术积累?
事实上,应该先学习 vue3 的技术,熟练使用 vue3 的最新语法糖和 setup 组合式 api 写法。然后才开始使用 vue2.7 的组合式 api。
尴尬
生态系统完全跟不上
有很多踩坑。最重要的一点是,vue2 时代的一揽子库,均跟不上 SFCs 的 <script setup>
语法糖。比如:
- 在 2.7 的
<script setup>
中,无法使用 vuex 常用的辅助函数。 - 2.7 的
<script setup>
无法使用 vue-router 的组合式 api。常用的后台管理系统根本不敢去升级路由版本,因为 api 改动过大。为了单纯的组合式 api 而对框架做升级根本不划算。 - 2.7 无法充分使用 vue-i18n 的组合式 api。v8 的是 vue2 的,v9 才提供了组合式 api,但是 v9 只面向与 vue3。
(备注 2.7 也可以使用 vue-i18n 提供的组合式 api,不过需要额外的库实现。)
自我阉割
有许多常用的功能丢了,没了,变差了。比如:
- this 实例的获取非常麻烦,还需要考虑生产环境能否访问。有的时候你还真的需要去访问 this 示例的。
- 2.7 的
<script setup>
仅仅允许单一模块导出,不允许同时导出多个模块。这限定死了某些特殊的代码写法。
不能完全使用 vue3 的语法
2.7 事实上不能充分的发挥 vue3 的技术。凡是 vue3 更新了更好的语法糖,你都没有资格在 2.7 内使用。我经常写 vue3,然后再切换回 2.7,我是会会明显感受到限制。这会给我带来相当大的心智负担,我需要额外考虑,2.7 不能使用最新的语法糖。
目前涌现出来的 vue 代码编写风格选型?
事实上出现了多种多样的代码写法了,我们需要权衡利弊。
vue2.6 + export default {option} + js + vetur 还行
这是最传统的代码写法。由 vetur 提供 vue 的语言服务。还算可以。
该写法是大家所熟知的写法。大家都会写,都熟悉。上来就能写,并实现业务。
该写法在规模化的组件内,确实被诟病。这是选项式 api 本身的弊端。
vue2.7 + export default defineComponent({option}) + js + volar 推荐
这个写法以增量的形式,拓展了很多功能。又不至于因为 vue2.7 + <script setup>
的缘故导致部分语法不能使用。
vue2.7 + <script setup>
+ js + volar 坐牢
不做赘述。自我阉割,废物一个。垃圾玩意。
vue3 + <script setup>
+ ts + volar 做不到
很抱歉,客观来说我们做不到。我做得到,我们做不到。
旧项目本身的升级成本过大
项目体量巨大时,你升级和迁移都忙不过来的。你来不及全面重构。
仅新项目可用
仅仅只有全新的项目,我们才有资格说,使用全套的,全新的技术栈。
对开发团队的技术栈要求过高
不要小瞧了这个写法的变更。写代码的不只有前端同事,还有后端同事。我们根本无法保证全体开发同事能够看懂 vue3 的新语法,typescript 的类型语法。学这些技术要时间的,我们团队没有时间去学习这些颠覆性的技术。大家习惯旧版本的语法了,新语法改动挺大的,大家学不完。
诸多不确定性
对于我来说,我仅仅只是在后台内使用 vue3 技术栈。没有在移动端内使用该技术栈,更不清楚写一些移动端核心的依赖包能不能较好的兼容。
没有成熟的二开框架
我是没有找到一款成熟的,开箱即用的,文档丰富的后台二开框架。就算找到了,团队更换框架的成本也是付不起的。
总结
- 不要迷信组合式 api 能改变什么。
- 2.7 不配。