
编写Vue.js的下一个主要版本的经验教训
由Evan You发表
在过去的一年中,Vue团队一直在研究Vue.js的下一个主要版本,我们希望在2020年上半年发布(该工作在撰写本文时仍在进行中)。Vue的新主版本于2018年底形成,当时Vue 2代码库已有大约两年半的时间了。在软件生命周期中,这似乎并不长,但在此期间,前端的思想已发生了很大变化。
两个主要的考虑因素促使我们编写了Vue的新的核心版本(并重写了旧版本):首先,常见的浏览器提供了新的JavaScript功能。其次,随着时间的流逝,当前代码库中的设计和体系结构问题会不断出现。
为什么要改写
使用新的语言功能
ES2015, JavaScript — ECMAScript, ES — , . , , Vue.
Proxy, . Vue — , (state), DOM. Vue 2 , . Proxy Vue, , .
Proxy — , . — , .
Vue 2 , - . , (templates) , sourcemap . , Vue 2 , , DOM, , . , .
, , , . , , , . .
Vue 3 2018 . .
Typescript
Vue 2 ES. , . . Facebook Flow type checker, ES. Flow , , ; , . , , TypeScript Visual Studio Code.
, Vue TypeScript . , TypeScript , . TypeScript , .
(decoupling)
monorepo, , API, . , , . , , , .
RFC
2018 DOM. , , API. .
, . Vue , . , RFC (Request for Comments) 2019 . RFC , , , . GitHub , , .
RFC , , , feature requests.
- . Vue 2 , , .
DOM
Vue : HTML- , , DOM-. , DOM , DOM . , , , , JavaScript, - . , , (bindings) — DOM , .
, . Vue 2 , , - . Vue 3 AST transform pipeline, (transform) .
, . , DOM DOM, DOM, , , . , .
, DOM , , , . , (runtime) : , . :
-, , , (, v-if v-for). (template) «», , . , — . DOM, , , .
-, , . , .
-, DOM , . , , , . .
-: Vue 3 Vue 2.
. -, , , JavaScript . . Vue — Vue 2 23 — :
-, . , , (transitions), - , .
-, , . , . , .
— , tree-shaking — , . , , .
Vue 3 , API ES . , . tree-shaking , , .
"", . . Vue 3 10 — Vue 2, .
Vue . Vue . Vue , , . , TypeScript, , Vue 2 .
Vue 3 TypeScript, (Class API). , , , , , , , JavaScript. , Class API , , TypeScript.
. React Hooks, API- , , Composition API. , Composition API , (statefull components), , TypeScript.
. Composition API , . Vue 3 , Composition API Options API . , , . , , , Composition API Options API. , .
Vue, , HTML/CSS, , jQuery, , , -, , . : , , ; , , , .
Vue , . Vue « », API, . CDN , HTML Options API, (CLI), Composition API.
为了实现我们的愿景,我们还有很多工作要做-最重要的是,更新支持库,文档和工具以确保顺利过渡到新版本。我们将在接下来的几个月中努力工作,我们正在等待-我们将等不及看到社区使用Vue 3创造的东西。
