基于第三方性能评估工具Benchmark的测评结果能够看出Vue 2.0版本在总体的性能上获得了大幅优化,即便与React和Angular最新版相比也相差无几。在提供给使用者的构建版本方面,也进行了针对性的细化,输出了多种不一样的版本,以便知足不一样需求的开发者使用更精细更适合本身的版本。javascript
官方文档上展现的归纳图表(如下译自该文档):html
UMD | CommonJS | ES Module | |
---|---|---|---|
Full | vue.js | vue.common.js | vue.esm.js |
Runtime-only | vue.runtime.js | vue.runtime.common.js | vue.runtime.esm.js |
Full (production) | vue.min.js | ||
Runtime-only (production) | vue.runtime.min.js |
解释一下上表列出的全部版本的内容区别和使用场景,具体的术语就不一一解释了,英语可得靠本身好好学习:vue
vue.js
vue.min.js
vue.common.js
vue.esm.js
vue.runtime.js
vue.runtime.min.js
vue.runtime.common.js
vue.runtime.esm.js
另外在仓库里发现的一个叫vue.esm.browser.js
的文件,仔细看了一下与vue.esm.js
相比用的全是ES6的语法,但图表里没有提到此文件是什么状况下使用,并且是稍前几回构建出的版本,我的猜测多是没有什么特别的用处,只是没有删掉而已,欢迎指正。java
完整版的使用场景是须要即时编译模板的状况,什么是即时编译模板?webpack
在程序运行中进行模板编译。这一过程如同动态加载,当把模板字符串做为配置选项的template属性传入Vue构造函数后再执行渲染进程;或使用DOM已有元素做为模板在运行时加载并编译,这些都是在运行中进行模板编译的实例。因而可知通常使用了type="text/x-template"
的script
标签包含的模板就是在代码运行中进行加载编译的,因此此时须要完整版中的编译器来执行把模板转化成渲染函数的过程,不然经过vue进行构造的内容是没法显示的。在开发时若是使用了运行时版,Vue也会在Console
中给出提示。git
相反,若是使用构建工具开发,在程序运行以前就先执行了模板的编译过程,.vue
单文件组件会被编译转换成javascript代码,在浏览器中能够直接运行,因此此时只需使用运行时版本就能够支持Vue的正常运行,这样Vue的体积更小,有助于提高加载速度,因此在熟悉了Vue以后比较推荐配合使用构建工具来进行开发。github
官方文档表示在通用模块版本中使用了开发和生产模式的硬编码,未压缩版的用于开发模式,压缩版的用于生产模式。web
在使用构建工具时,建议使用与构建工具版本相应的未压缩版,这样在开发时参考错误信息报告和定位调试是很是便利的,而在构建打包到生产环境时,配套插件会负责压缩代码。vue-cli
基于网页性能优化的原则,建议在生产环境中都要使用压缩版。只有在开发时才须要未压缩版中的错误提示信息方便定位错误及调整。浏览器
在2.0版本发布之后,Vue开始提供不一样构建版本,大体了解以后发如今不一样开发场景下选择适当的版本有助于减小开发时每次打包的速度,而且了解各类版本的不一样后也能选择适合的生产版本提高应用的总体性能。在网上找了好久才发现原来官方Github上有比较详细的说明文档解释各类版本的区别,不过对于具体的使用场景没有特别突出的说明,最后仍是本身花了些时间去比较和总结,算是又把心中的一块小石头给抹掉。我想对于目前跟我同样还不太了解Vue内部实现机制的同窗来讲,弄明白各类版本的差别是一个快速获得性能优化最佳实践的途径。