视频地址:Design Principles of Vue 3.0 by Evan You or Design Principles of Vue 3.0前端
视频主要介绍 Vue 3.0 设计背后的意图。vue
Vue 但愿尽量知足不一样用户群体的不一样需求,但愿提供用户低门槛、易用、灵活、高可扩展、功能强大、体积感人的框架,也但愿框架自己易维护。设计 Vue 3.0 时,框架开发者时时刻刻面临着在这些需求间进行取舍,求得平衡。node
兼顾低门槛与可扩展,以知足非专业前端工程师的建站需求及建立高复杂度项目的需求。数组
CDN build & Vue CLI浏览器
使用 TypeScript:性能优化
优势:前端工程师
缺点:框架
在 Vue 3.0 中,不强制要求用户使用 TypeScript,TypeScript 用户和 JavaScript 用户都能从 IDE 插件提供的功能中获益。ide
Vue 3.0 但愿成为一个包容性的框架,适用于任何想用 Vue 的用户。函数
开发者能够选择本身喜欢的方式组织代码。但 Template 将有利于 Virtual DOM 的性能优化。
每次视图更新,必须遍历整个 Virtual DOM 树,找到变化的 node ,这其实也是某种意义上的暴力脏检查。
Template 是具备语法约束模板字符串,比起 JSX 或渲染函数,更有利于对其进行某些分析。
在 Vue 3.0 中,将构建 Block Tree 来优化上述问题:
举个栗子,有结构以下,对于外层 block ,它只有一个动态结点即 v-if 结点。对于内层 block ,只有 message span 可能动态变化。
原来各层都有多个结点,层级也不止两层。通过优化,极大的减小了 Diff 时递归层级与迭代深度。更新性能将取决于动态内容的数量,而不是整个 template 的体积。
垃圾回收是 Vue 重要的性能杀手之一,这个优化也极大地减轻了垃圾回收的压力。
在以前的处理中,每次 render ,都会为全部结点,包括静态结点,从新建立 Virtual DOM node ,这实际上是很浪费的。优化后,每次 render 只须要复用以前的对象,而无需从新建立。
在 Vue 3.0 中:
v-model="string"
,将自动引入 vModelText
。在线体验 DEMO)以 React 和 Angular 举例, Angular 试图作的更多,而 React 试图作的更少。(并非说他们中谁的设计很差,这只是框架设计的不一样选择)
此处以 small scope 代指 React 这类框架 ,以 big scope 代指 Angular 这类框架。
Small Scope 优势:
Small Scope 缺点:
因此,这也是一种权衡,生态发展太快,会致使生态碎片化,增长用户的开发成本,提升用户的流失率。
Large Scope 优势:
Large Scope 缺点:
而 Vue 则是在二者间,作了一个取舍平衡。在此称其为 "Progressive" Scope。
在 Vue 3.0 中:
开放更多的底层能力