Vue.js 3.0 新特性有哪些?来看一看

2018-11-1913:01:09WEB前端开发Comments2,750 views字数 1622阅读模式

利用现代浏览器支持的新功能,Vue 3 将成为我们已经了解和喜爱的 Vue.js 强大的的改进版本。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

让 Vue 更快

虽然 Vue 已经非常快了,但 Evan 认为 Vue 3 会更快。如何做到呢…文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

重写虚拟DOM (Virtual DOM Rewrite)

随着虚拟 DOM 重写,我们可以期待更多的 编译时(compile-time)提示来减少 运行时(runtime)开销。重写将包括更有效的代码来创建虚拟节点。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Vue.js 3.0 新特性有哪些?来看一看文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

优化插槽生成(Optimized Slots Generation)

在当前的 Vue 版本中,当父组件重新渲染时,其子组件也必须重新渲染。 使用 Vue 3 ,可以单独重新渲染父组件和子组件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Vue.js 3.0 新特性有哪些?来看一看文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

静态树提升(Static Tree Hoisting)

使用静态树提升,这意味着 Vue 3 的编译器将能够检测到什么是静态组件,然后将其提升,从而降低了渲染成本。它将能够跳过未整个树结构打补丁的过程。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Vue.js 3.0 新特性有哪些?来看一看文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

静态属性提升(Static Props Hoisting)

此外,我们可以期待静态属性提升,其中 Vue 3 将跳过不会改变节点的打补丁过程。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Vue.js 3.0 新特性有哪些?来看一看文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

基于 Proxy 的观察者机制

目前,Vue 的反应系统是使用 ObectDefineProperty 的 getter 和 setter。 但是,Vue 3 将使用 ES2015 Proxy 作为其观察者机制。 这消除了以前存在的警告,使速度加倍,并节省了一半的内存开销。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

为了继续支持 IE11,Vue 3 将发布一个支持旧观察者机制和新 Proxy 版本的构建。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

使 Vue 更小

Vue已经非常小了,在运行时(runtime)压缩后大约 20kb 。 但我们可以期待它会变得更加小,新的核心运行时压缩后大概 10kb 。 这将在很大程度上通过消除不使用的库(也称为Tree Shaking)来实现。 例如,如果您没有使用 过渡(transition)元素,则不会包含它。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

下面您可以看到 hello world 应用程序与压缩后的大小的比较。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Vue.js 3.0 新特性有哪些?来看一看文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

使其更具可维护性

虽然大多数 Vue 开发人员都没有在库本身上工作,但很高兴知道 Vue 3 将带来更多可维护的源代码。 它不仅会使用 TypeScript ,而且许多软件包将被解耦,使所有内容更加模块化。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Vue.js 3.0 新特性有哪些?来看一看文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

更多的原生支持

运行时内核也将与平台无关,使得 Vue 可以更容易地与任何平台(例如Web,iOS或Android)一起使用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

更易于开发使用

Observer 模块已被解压缩到自己的包中,允许您以新的方式使用它:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Vue.js 3.0 新特性有哪些?来看一看文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

跟踪重新渲染的位置也会更容易。 在 Evan 的演讲中,他做了一些实时编码,并展示了如何跟踪 Vue 应用程序(使用下面的代码)来找出触发组件重新渲染的内容。 这在更大的应用程序和性能微调中非常有用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Vue.js 3.0 新特性有哪些?来看一看文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Vue 3.0 还会改进对 TypeScript 的支持,允许在编辑器中进行高级的类型检查和有用的错误和警告。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Vue.js 3.0 新特性有哪些?来看一看文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

实验性的 Hooks API

当我们需要在 Vue 中共享两个组件之间的行为时,我们通常使用 Mixins 。然而,Evan 正在尝试使用 Hooks API 来避免来自 Mixins 的一些问题,并且更适合使用惯用的 Vue 代码。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

实验性的 Time Slicing 支持

当您有许多组件同时尝试重新渲染时,任何浏览器都可以开始变得很慢,从而使用户体验下降。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Evan展示了他如何尝试使用 Time Slicing,将 JS 的执行分解为几个部分,如果有用户交互需要处理,这些部分将提供给浏览器。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Vue.js 3.0 新特性有哪些?来看一看文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

小结

我已经喜欢用Vue进行编码了,我很高兴能看到 Vue 更具竞争力,模块化,更容易调试和更多的开发乐趣。 另外上面说的这些内容除了“明年晚些时候”之外,还没有一个明确的发布日期。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

总结起来,Vue 3 以下方面值得我们期待 :文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

  • 更快
  • 更小
  • 更易于维护
  • 更多的原生支持
  • 更易于开发使用

完整的PPT:https://docs.google.com/presentation/d/1yhPGyhQrJcpJI2ZFvBme3pGKaGNiLi709c37svivv0o/edit#slide=id.p文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

Evan 和 Vue 团队的目标是尽可能顺利地过渡到 Vue 3 ,在这个过程中,这些变化在无形地改善了框架。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/7889.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/gcs/7889.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定