Vue 有两种常见的构建版本:完整版(Vue Full Build)和运行时版本(Vue Runtime Build)。这两者的区别主要体现在模板编译、文件体积和应用场景等多个方面。下面将从不同的角度详细解释两者的区别。
1. 模板编译器(Template Compiler)
- Vue 完整版(Full Build):
- 完整版包含了 模板编译器,允许你在 Vue 实例中使用字符串模板 (
template
),也支持在 .vue
单文件组件中直接编写模板代码。
- 当你使用
new Vue({ template: '...' })
这种方式时,Vue 会把模板编译成渲染函数并执行。这个编译过程是在运行时完成的,因此更灵活,但编译器的体积也增加了整体库的大小。
- Vue 运行时版本(Runtime Build):
- 运行时版本 没有包含模板编译器,因此它无法处理模板字符串。你必须提供已经编译好的渲染函数 (
render function
)。
- 运行时版本只能解析用
render
函数编写的渲染逻辑,或者通过打包工具(如 Webpack、Rollup)预先编译好的 .vue
文件。通常搭配使用 Vue Loader 和编译工具来编译 .vue
文件成渲染函数。
- 优点是没有编译器部分,体积更小,加载速度更快。
2. 体积和性能
- Vue 完整版:
- 完整版因为包含了模板编译器,所以体积比运行时版本要大一些。对于生产环境中的应用,Vue 完整版通常不适合,因为它包括了编译器的额外代码。
- 体积大小:Vue 2 的完整版大约为 30 KB 左右(gzip 压缩后),Vue 3 完整版则可能会更大一些。
- Vue 运行时版本:
- 运行时版本移除了编译器的部分,所以体积更小,加载更快,适合在生产环境中使用。
- 体积大小:Vue 2 的运行时版本大约为 20 KB(gzip 压缩后),Vue 3 的运行时版本可能会稍大一些,但依然比完整版小。
- 在性能上,由于没有编译模板的过程,运行时版本也会有更好的初始渲染性能。
3. 使用场景
- Vue 完整版:
- 如果你在开发过程中不使用构建工具(如 Webpack 或 Rollup),或者你想动态地使用字符串模板来定义 Vue 组件,那么你需要使用 Vue 完整版,因为它包含了模板编译器,可以在运行时解析模板。
- 常见于简单的页面引入,通过
<script>
标签引用 Vue,并使用 new Vue({ template: '...' })
的方式初始化 Vue 实例。
- Vue 运行时版本:
- 更常见于搭配构建工具使用,比如在 Vue CLI 或 Webpack 项目中。Vue 文件在构建过程中由
vue-loader
编译成渲染函数,因此不再需要在浏览器中进行模板编译,减少了编译器的体积负担。
- 常用于生产环境,提升性能。
4. 开发工具支持
- Vue 完整版:
- 可以直接在浏览器中调试,支持动态模板编写。因此在开发过程中,尤其是早期快速原型设计时,使用 Vue 完整版能更方便地调试和开发。
- Vue 运行时版本:
- 通常和构建工具结合使用,调试时需要通过构建工具(如 Webpack)的 Sourcemap 功能来定位问题。
- 不支持直接在浏览器控制台动态修改模板,因此调试过程中不如完整版本方便。
5. .vue
单文件组件支持
- Vue 完整版 和 Vue 运行时版本:
- 二者都支持
.vue
单文件组件,但它们的使用方式不同。Vue 完整版可以在不经过构建的情况下,直接使用模板编译器来处理模板;而 Vue 运行时版本需要在打包时(通过 vue-loader
)将 .vue
文件编译成渲染函数。
6. 如何选择
- Vue 完整版:
- 适合简单的、不使用打包工具的项目,或者在开发过程中需要动态编译模板的场景。如果你只是直接通过 CDN 引入 Vue,使用模板字符串进行开发,完整版本更合适。
- Vue 运行时版本:
- 更适合现代化项目,尤其是使用 Vue CLI 或 Webpack 构建的项目。因为
.vue
文件会在编译阶段生成渲染函数,运行时版本没有编译器,因此打包后的体积更小、加载速度更快。大多数生产环境的项目会选择运行时版本。
7. Vue 2 和 Vue 3 的差异
- 在 Vue 2 中,完整版和运行时版本是两个单独的构建,你可以通过
dist
文件来选择使用哪个版本。
- 完整版:
vue.js
或 vue.min.js
- 运行时版本:
vue.runtime.js
或 vue.runtime.min.js