两个构建版本
可以知道vue的构建版本分为
- 完整版:包括编译器和运行时版本
- 不完整:只包含运行时版
编译器:用来将模板字符串编译成为 JavaScript 渲染函数的代码。
运行时:用来创建 Vue 实例、渲染并处理虚拟 DOM 等的代码。基本上就是除去编译器的其它一切。
但是貌似这样解释了一个寂寞?那就结合vue的工程代码以及vue的相关流程来理解吧。
首先,明确一点,我们平时用vue工具,默认的就是不完整版本-也就是没有编译器的那一版本。
准备:
-
完整版对应的文件是
vue.js/vue.min.js
-
运行时版对应的是
vue.runtime.js/vue.runtime.min.js
-
引用:去bootcdn上引用一个版本好了,这里用的是2.6.10版本的vue.min.js和vue.runtime.min.js
完整版
完整版将html/template编译成DOM节点,后续对数据的操作是分析出来是哪个DOM节点,直接去改那个节点。 完整版本可以从html直接获取视图,只要是从html/template变到页面视图相关,完整版就支持。
这个template既可以写在页面又可以写在js里。
运行时版
因为没有编译器,不可以把html/template转化成DOM节点,所以要用render(vue传了h参数),得通过h函数来写视图。需要会写render、h那一块(比较麻烦)。
new Vue({
render (h) {
return h('div', this.n)
}
})
但是可以在webpack打包时通过webpack的vue-loader,在打包的时候就把html/template转成h函数(so用户是不用下载vue-loader的),这样开发者也不用写h函数,在运行时版本里也可以直接写html标签。
由于砍掉了编译器,到用户那边的大小就少了百分之四十,用户那边加分✅
并且vue-loader干了把html转成h函数的脏活,开发这边加分✅