Vue 3.0 特性及改变方向

有写的不对的地方,欢迎评论指正~啾咪!

Vue 3.0 ?

2019年6月8日,Evan You(尤雨溪)在 VueConf 的主题演讲中透露3.0 的模板性能完爆 JSX 。
利用现代浏览器支持的新功能,Vue 3 将成为我们已经了解和喜爱的 Vue.js 强大的的改进版本。
按照尤雨溪的说法,因为 Vue 3.0 是主要版本,所以会包含一些重大变更。

为什么Vue 3.0 是主要版本?

Vue 1.0 到Vue 2.0 的升级:改变了配置文件,修改了API文档。
具体改变,例如:

  • 使用v-slot取代slotslot-scope
  • 修改获取DOM元素方式;
  • 变更v-for遍历数组时的参数顺序 ;
  • 等等…

而在Vue 3.0从源码开始,从头开始重新写,并将一些内部功能分解为单独的包,以便隔离复杂性。

Vue 3.0有这几个主要特点:响应式、模板、对象式的组件声明方式,进行了全面的更改,底层的实现和上层的api都有了明显的变化,基于Proxy重新实现了响应式,基于treeshaking内置了更多功能,提供了类式的组件声明方式。而且源码全部用typescript重写。以及进行了一系列的性能优化。
在这里插入图片描述

有哪些值得期待的地方?

  1. Make it faster(让它更快)
  2. Make it smaller(打包后文件更小)
  3. Make it more maintainable(更易于维护)
  4. Make it easier to target native(更容易定位原生)
  5. Make it more modular(更加模块化)
  6. 改进编译器
  7. 支持 IE 11
  8. 其他运行时改进
  9. 改进观察机制
  10. 加强 TypeScript 支持
  11. 加强 API 设计一致性
  12. 开放更多底层功能

将会有哪些重大改变?

  1. 新的源代码结构(有可能会变化)
  2. 重写虚拟DOM (Virtual DOM Rewrite)
    随着虚拟 DOM 重写,我们可以期待更多的 编译时(compile-time)提示来减少 运行时(runtime)开销。重写将包括更有效的代码来创建虚拟节点。
    在这里插入图片描述
  3. 安装和修补速度提高100%(faster mounting & patching)
  4. 更多编译时提示(More compile-time hints)
  5. 减少运行时开销(to reduce runtime overhead)
  6. 优化的插槽生成(Optimized Slots Generation)
    避免不必要的父/子重新渲染在这里插入图片描述
  7. 静态树提升(Static Tree Hoisting)
    使用静态树提升,这意味着 Vue 3 的编译器将能够检测到什么是静态组件,然后将其提升,从而降低了渲染成本。它将能够跳过未整个树结构打补丁的过程。
    在这里插入图片描述
  8. 静态属性提升(Static Props Hoisting)
    跳过修补节点本身,但继续修补子节点
    在这里插入图片描述
  9. 内联处理器提升(Inline Handler Hoisting)
    由于不同的内联函数标识,避免不必要的重新渲染
    在这里插入图片描述
  10. 基于 Proxy 的观察者机制,全语言覆盖+更好的性能(Proxy-based observation mechanism with full language coverage + better perf)
    目前,Vue 的反应系统是使用 Object.defineProperty 的 getter 和 setter。
    但是,Vue 3 将使用 ES2015 Proxy 作为其观察者机制。 这消除了以前存在的警告,使速度加倍,并节省了一半的内存开销。
    为了继续支持 IE11,Vue 3 将发布一个支持旧观察者机制和新 Proxy 版本的构建。
  11. 打包后更小
    这将在很大程度上通过消除不使用的库(也称为Tree Shaking)来实现。 例如,如果您没有使用 过渡(transition)元素,则不会包含它。在这里插入图片描述
  12. 使其更具可维护性
    虽然大多数 Vue 开发人员都没有在库本身上工作,但很高兴知道 Vue 3 将带来更多可维护的源代码。 它不仅会使用 TypeScript ,而且许多软件包将被解耦,使所有内容更加模块化。
  13. 更多的原生支持
    运行时内核也将与平台无关,使得 Vue 可以更容易地与任何平台(例如Web,iOS或Android)一起使用。
  14. 更易于开发使用
    Observer 模块已被解压缩到自己的包中,允许您以新的方式使用它:
    在这里插入图片描述
  15. 跟踪重新渲染的位置也会更容易。 Evan 在 2018年的演讲中做了一些实时编码,并展示了如何跟踪 Vue 应用程序(使用下面的代码)来找出触发组件重新渲染的内容。 这在更大的应用程序和性能微调中非常有用。
    Vue 3.0 还会改进对 TypeScript 的支持,允许在编辑器中进行高级的类型检查和有用的错误和警告。
    在这里插入图片描述
  16. 实验性的 Hooks API
    当我们需要在 Vue 中共享两个组件之间的行为时,我们通常使用 Mixins 。然而,Evan 正在尝试使用 Hooks API 来避免来自 Mixins 的一些问题,并且更适合使用惯用的 Vue 代码。
    在这里插入图片描述
  17. 实验性的 Time Slicing 支持
    当您有许多组件同时尝试重新渲染时,任何浏览器都可以开始变得很慢,从而使用户体验下降。
    Evan展示了他如何尝试使用 Time Slicing,将 JS 的执行分解为几个部分,如果有用户交互需要处理,这些部分将提供给浏览器。

如何兼容Vue2.0?

开发组会非常重视兼容性问题,他们也将尽快开始传达这些重大变更,并做了这样的保证:除了渲染函数 API 和作用域插槽语法之外的所有内容都将保持不变,或者通过兼容性构建让其与 2.x 保持兼容。

Vue 3.0 虽然会对顶级 API 进行重大的修整,但依然会保持与 2.x 的兼容。此外,2.x 的最后一个次要版本将成为 LTS,并在 3.0 发布后继续享受 18 个月的 bug 和安全修复更新。

发布日期?

最终发布时间还没确定,可能会在 2019 年。

开发组将完成 3.0 版本的编译器和服务器端渲染部分,并开始发布 Alpha 版本。这些主要用于针对一小部分新应用进行稳定性测试。然后就是 Beta 阶段,在测试阶段,主要目标是更新支持库和工具,如 Vue Router、Vuex、Vue CLI、Vue DevTools,并确保它们与新版本能够完美兼容。开发组还会与社区的库作者合作,帮助他们一起为 3.0 做好准备。

在 API 和代码库稳定之后,将冻结 API 并进入 RC 阶段。在这个阶段,还将提供“兼容版本”:包含 2.x API 兼容层的 3.0 版本。这个版本还将带有一个标记,可以打开这个标记来禁用有关 2.x API 的警告。兼容版本可作为将应用程序升级到 3.0 的指南。

在发布最终版本之前的最后一个任务是提供上述的 IE 11 兼容构建版本。

最后附上参考的文章:
尤雨溪公布 Vue 3.0 开发路线:将从头开始重写 3.0.
Vue.js 3.0 新特性预览.
Vue Toronto 的Vue.js 3.0 主题演讲的PPT(需要科学上网工具).
Vue Conf 上海 2019 的Vue.js 3.0 主题演讲的PPT(需要科学上网工具).
RFC地址.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue3.的新特性包括: 1. 更快的渲染速度和更小的包大小 2. 更好的TypeScript支持 3. 更好的响应式系统 4. 更好的组合API 5. 更好的性能优化 Vue3.与Vue2.的区别包括: 1. Vue3.使用了Proxy代替了Object.defineProperty来实现响应式系统,提高了性能和可维护性。 2. Vue3.的组合API更加灵活,可以更好地组织和复用代码。 3. Vue3.的模板编译器也进行了优化,可以更好地支持动态组件和slot。 4. Vue3.的包大小更小,性能更好,同时也更容易进行Tree-shaking和按需加载。 5. Vue3.的TypeScript支持更加完善,可以更好地进行类型检查和代码提示。 ### 回答2: Vue 3.0Vue框架的最新版本,引入了很多新特性和改进,具体来说包括以下方面: 1.性能提升:Vue 3.0 引入了 Compiler 提升,同时使用了新的响应式系统和虚拟 DOM,使得整个框架的性能得到了很大程度的提升。 2. Composition API:在Vue 2.0中,我们常用的API是Options API,随着组件的复杂程度增加,Options API的代码逐渐变得冗长难以维护。为此Vue 3.0中引入了Composition API,该API采用函数式编程的思想,将组件内的逻辑进行聚合,比如可以将一个组件的生命周期和状态管理都放在一个函数内,提升了代码的可读性和可维护性。 3. Fragment支持:在Vue 2.0中,如果有多个根节点需要渲染,则必须使用一个外部的容器来包裹这些根节点。但这种方式不太优雅,可能会导致布局的混乱。Vue 3.0 中,支持使用 Fragment来解决这个问题,即多个根节点可以直接进行渲染。 4. Teleport:Vue 3.0 中的 Teleport 组件可以帮助我们将某个组件挂载到 DOM 结构中某个特定的父节点中。即一个组件可以在 DOM 树的任意位置进行渲染,解决了Vue 2.0的 Portal的问题,实现了更加灵活的组件渲染。 5. 改进的 TypeScript 支持:Vue 3.0 改进了 TypeScript 的定义文件,使得开发人员可以更加方便地使用 TypeScript 进行开发。 总体来说,Vue 3.0相比于 Vue 2.0,在性能和开发体验方面都有明显的提升,特别是Composition API的引入,可以大大提高代码的可读性和可维护性,使得Vue框架更加适合大型复杂应用的开发。 ### 回答3: Vue.js是一款流行的前端JavaScript框架,其主要特点是轻量级、高效率和易于使用。随着时间的推移,Vue.js的版本也在不断更新,其中最新版本的Vue.js 3.0引入了一些新的功能和改进,与Vue.js 2.0相比,其最大的差异在于性能和开发效率方面有了显著的提升。 1. 更快的渲染速度和更小的包大小: Vue.js 3.0采用了新的响应式系统Reactivity API,并重新设计了内部架构。这些设计使Vue.js 3.0的性能优于Vue.js 2.0,特别是在大规模应用程序中。此外,Vue.js 3.0采用了Tree-shaking技术,这使得Vue.js 3.0包的大小比Vue.js 2.0小30%以上。 2. 新的追踪机制: Vue.js 3.0采用了Proxy对象来改进响应式追踪的性能,这意味着当响应式对象发生变化时,只会触发必要的重渲染。这样可以避免不必要的DOM操作和渲染,从而提高Vue.js的整体性能。 3. Composition API: Vue.js 3.0引入了Composition API,这是一种新的API风格,旨在更好地组织Vue.js代码,使其更易于维护和重用。 Composition API 使得Vue.js的组件代码更像传统的JavaScript函数,而不是基于对象的API风格。 4. 更好的TypeScript支持: Vue.js 3.0通过更好的TypeScript定义支持来提高类型安全性。Vue.js 3.0还提供了新的 TypeScript 类型声明文件,这可以使得开发者在使用TypeScript时,享受到精确的代码补全和类型检测。 总之,Vue.js 3.0的新特性主要集中在性能、开发效率和组件复用等方面。除了上述功能之外,Vue.js 3.0还引入了其他一些改进,例如更好的错误处理、更高效的动态渲染API和生命周期API等。所有这些功能的加入都意味着Vue.js 3.0将成为未来大规模应用程序的理想选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值