「2022 年什么会火?什么该学?本文正在参与“聊聊 2022 技术趋势”征文活动 」
要说2022
年什么会火?Vue3
将首当其冲!
原因是,这两天vue-next
项目以正式更名为core
,标志着Vue3
即将转正迎来春天
可以看到现在vuejs Pinned的项目
- core :26.9k stars,就是之前的
vue-next
,即Vue3
虽然安装方式还是npm init vue@latest
或yarn create vue
,但是以更名为core
,说明它已经成为近期最核心的宠儿
- docs :
Vue3
的中文文档,1.5k stars - create-vue :522 stars,是一个新项目,用一种更简便的方式创建Vue项目
比如创建Vue3项目使用npm init vue@3
,创建Vue2项目可使用npm init vue@2
- router :Vue的官方路由,之前的
vue-router-next
,1.7k stars, - pinia :4.9k stars,是Vue新一代的状态管理器,像是
Vuex5.x
的实现,挂在这不知道会是否想用它取代之前的Vuex
- devtools :vue的调试工具,21.6k stars
可以看出所有都在打辅,视乎所有的目光都聚焦于Vue3
。也是并且经过一年多沉淀,Vue3生态已经相当稳定了,相信2022
越来越多的公司也会选择Vue3
也许你的同事会问:为什么用Vue3啊?用之前的Vue2不是挺好的吗?
我思考了许久,确实老项目可以考虑不用,但是新项目可以考虑上了,我简单小结为以下6
点Vue2所没有的优势
1. Vue3使用TS重构了项目,获得更好的类型支持
2. 重构了响应式系统
Vue3使用Proxy
替换Object.defineProperty
,重构了Vue的响应式系统;解决了Vue2.x中存在的响应性问题
包括:
- 可的直接监听数组类型的数据变化
- 监听的目标为对象本身,不需要像
Object.defineProperty
一样遍历每个属性,有一定的性能提升 - 更强大的拦截功能,拦截器包括
get
、set
、has
、deleteProperty
、ownKeys
、getOwnPropertyDescriptor
、defineProperty
、preventExtensions
、getPrototypeOf
、isExtensible
、setPrototypeOf
、apply
、construct
13种
3. 引入了Composition API
vue3.0
中引入了composition API
,专门用于解决功能、数据和业务逻辑分散的问题,使项目更益于模块化开发以及后期维护
它的核心是setup
函数,这样做的好处是,当应用变得复杂一点时,我可以将功能对应的数据和业务逻辑抽离出来,需要是import,以至于更好的逻辑复用和代码组织
4. 优化了Virtual DOM
包括:
- 模板编译时的优化;将一些静态节点编译成常量
slot
优化;将slot
编译为lazy
函数,将slot
的渲染的决定权交给子组件- 模板中内联事件的提取并重用(原本每次渲染都重新生成内联函数)
5. 更好的Tree shaking
引入尤大的原话:
Tree-shaking其实就是把无用的模块进行“剪枝”,很多没有用到的API就不会打包到最后的包里
事实上,Tree shaking并不是Vue3新增的东西,它是打包工具如webpack
或者rollup
的功能,但是由于Vue3代码结构调整,把vue
本身当一个对象去操作,这样的结果是,使得一些可能不会用到的功能就可以被tree shaking
掉,从而使得体积更小
主要原理:依赖es6
的模块化的语法,将无用的代码(dead-code
)进行剔除
6. <script setup>
<script setup>
是Vue3.2新增的语法糖,消除我们在使用compositionAPI时的心智负担,让我们没有理由不使用compositionAPI
优势:
- 更简洁
- 能够使用纯TS声明props和抛出事件
- 更好的运行时性能和IDE类型推断性能
以上就是对比Vue2,Vue3的几个优势
那么问题来了
你觉得2022年Vue3会迎来春天、成为主流选择之一吗?
A.主流 B.非主流
欢迎留言,交流~