# 主题演讲(演讲者:尤雨溪)

第一场是尤大大的远程演讲,微信视频那边的尤大大一开始听不到会场的声音有点尬,不过很幽默风趣,尤其是那一句“那我现在是不是应该说点什么?”全场哈哈哈哈~~~

先放两张图:

alt

alt Vue.js 3.0的新特性:

  • 易于维护
  • 更好的多端渲染支持
  • 其它新功能

# 更快

  • Virtural Dom全部重写,初始渲染的速度翻倍
  • js加载速度提升一倍,且内存占用减半
  • 放弃Object.defineProperty,使用更快的proxy(每个Vue组件代理其data、computed等;this就是一个组件实例的proxy)
  • 利用基于 Proxy 的观察者机制来更新数据监听,从而提高组件实例初始化的速度
  • 尽可能地在编译时(compile-time)分析压榨性能,从而减少在运行时(run-time)的开销
  • 优化slot的生成、静态内容/属性的直接提取、更友好的hint提示、对对象属性的增删、数组index/length的

alt

# 更小

  • Tree-shaking更友好(原理大概是:无用的代码都扔掉,做到按需引入,就像一棵树上的枯叶可以抖下来)
  • run-time只占不到70kb

# 更易维护

  • 全部改用Typescript重写(以前是Flow)

不但对用户、社区支持好很多,同时也降低源代码的阅读难度(因为ts的类型信息可以增大阅读性)

  • 内部模块解耦

像监听器观察者(observer)、compiler-core、runtime-core这些耦合度较低的,单独存放了一个文件夹;vue文件夹里放的就是现在的前端工程项目

alt

  • Vue 3的编译器重构 alt

# 更好的多端渲染支持

  • 自定义Renderer API

可以从@vue/runtime-core这个库里导出createRenderer这一API来执行类似于render(h)的操作 alt

# 其它新功能

  • 轻松排查组件状态更新的触发原因

renderTriggered(event) { debugger}; 其中event是具体的信息,包括oldKey、newKey、event类型等等

  • 更好的Typescript支持,包括原生classAPI和TSX
  • 更好的警告信息
  • Hooks API(作为一种逻辑复用XX,“完爆”Mixin)
  • 支持IE 11,可能不会兼容全部,但会采用降级方式或者友好的提示
  • 可以不用div作为root节点
  • 每一帧只做16~17ms的工作量,保证在大量计算下也能保证用户的操作

# 总结

总的来说,Vue3在性能方面还是改进了很多,同时也很好地支持TypeScript的语法了。当代码报错的时候不再是像目前各种debugger排查原因,而是大大提升了渲染速度、开发效率,也减小了占有内存。

Vue3.0发布时间:19年下半年 (期待ing)

更新时间: 4/8/2020, 11:46:02 AM