vue2 通过 2.2 版本升级后, 文件变成了 8 个:javascript
瞬间就懵逼了, 这些文件该怎么选?
下面就来讲下, 这 8 个做用都用在什么场景, 有什么区别html
按照构建方式分, 能够分红 完整构建(包含独立构建和运行时构建)
和 运行时构建
按照规范分, 能够分红 UMD, CommonJS 和 ES Modulevue
简单来讲, 完整构建
和 运行时构建
的区别就是, 可不能够用template
选项, 和文件大一点,小一点java
属于: 基于 CommonJS 的完整构建
能够用于 Webpack-1 和 Browserify 之类打包工具
由于是完整构建
, 因此能够使用template
选项, 如:webpack
import Vue from 'vue' new Vue({ template: ` <div id="app"> <h1>Basic</h1> </div> ` }).$mount('#app')
注意: 用 webpack-1 之类打包工具时, 使用该版本, 须要配置别名, 以 webpack 为例:web
{
resolve: { alias: { 'vue$': 'vue/dist/vue.common.js' } } }
属于: 基于 ES Module 的完整构建
能够用于 Webpack-2 和 rollup 之类打包工具
由于是完整构建
, 因此能够使用template
选项, 如:app
import Vue from 'vue' new Vue({ template: ` <div id="app"> <h1>Basic</h1> </div> ` }).$mount('#app')
注意: 用 webpack-2 之类打包工具时, 使用该版本, 须要配置别名, 以 webpack 为例:ide
{
resolve: { alias: { 'vue$': 'vue.esm.js' } } }
属于: 基于 UMD 的完整构建
能够用于直接 CDN 引用
由于是完整构建
, 因此能够使用template
选项, 如:函数
<script src="https://unkpg.com/vue/dist/vue.js"></script> <script>
和 vue.js 同样, 属于压缩后版本工具
属于: 基于 CommonJS 的运行时构建
能够用于 Webpack-1 和 Browserify 之类打包工具
运行时构建不包含模板编译器,所以不支持template
选项,只能用render
选项,但即便使用运行时构建,在单文件组件中也依然能够写模板,由于单文件组件的模板会在构建时预编译为render
函数, render
函数的使用, 请参考: http://cn.vuejs.org/v2/guide/render-function.html
import Vue from 'vue' new Vue({ render: function(h){ return h('h1', 'Hi Vue') } }).$mount('#app')
属于: 基于 ES Module 的运行时构建
能够用于 Webpack-2 和 rollup 之类打包工具
运行时构建不包含模板编译器,所以不支持template
选项,只能用render
选项,但即便使用运行时构建,在单文件组件中也依然能够写模板,由于单文件组件的模板会在构建时预编译为render
函数, render
函数的使用, 请参考: http://cn.vuejs.org/v2/guide/render-function.html
import Vue from 'vue' new Vue({ render: function(h){ return h('h1', 'Hi Vue') } }).$mount('#app')
属于: 基于 UMD 的运行时构建
能够用于直接 CDN 引用
该版本和vue.js
相似, 能够用于直接 CDN 引用, 由于不包含编译器
, 因此不能使用template
选项, 只能使用render
函数
<script src="https://unkpg.com/vue/dist/vue.runtime.js"></script> <script> new Vue({ render: function(h){ return h('h1', 'Hi Vue') } }).$mount('#app') </script>
和 vue.runtime.js 同样, 属于压缩后版本