Vue2 dist 目录下各个文件的区别

题图 By Clm From Bingjavascript


vue2 dist文件夹中有8个文件以下:
html

  1. vue.common.jsvue

  2. vue.esm.jsjava

  3. vue.jsnode

  4. vue.min.jswebpack

  5. vue.runtime.common.jsweb

  6. vue.runtime.esm.jsvue-cli

  7. vue.runtime.js浏览器

  8. vue.runtime.min.js微信

为何会有个文件呢?下面就来讲下, 这 8 个做用都用在什么场景, 有什么区别。


Vue项目按照构建方式分, 能够分红 完整构建 和 运行时构建。


按照规范分, 能够分红 UMD, CommonJS 和 ES Module。


简单来讲, 完整构建 和 运行时构建的区别就是, 可不能够用template选项, 和文件大一点,小一点。而按照不一样的规范能够运行在不一样的开发环境中。


vue.common.js属于: 基于 CommonJS 的完整构建能够用于 Webpack-1 和Browserify 之类打包工具,由于是完整构建, 因此可使用template选项, 如:


import Vue from 'vue'
new Vue({
 template: `
   <div id="app">
     <h1>Basic</h1>
   </div>
 `

}).$mount('#app')


注意: 用 webpack-1 之类打包工具时, 使用该版本, 须要配置别名, 以 webpack 为例:


{
 resolve: {
   alias: {
     'vue$': 'vue/dist/vue.common.js'
   }
 }
}


vue.esm.js属于: 基于 ES Module 的完整构建。能够用于 Webpack-2 和 rollup 之类打包工具,由于是完整构建, 因此可使用template选项, 如:


import Vue from 'vue'
new Vue({
 template: `
   <div id="app">
     <h1>Basic</h1>
   </div>
 `

}).$mount('#app')


注意: 用 webpack-2 之类打包工具时, 使用该版本, 须要配置别名, 以 webpack 为例:


{
 resolve: {
   alias: {
     'vue$': 'vue.esm.js'
   }
 }
}


vue.js属于: 基于 UMD 的完整构建。能够用于直接 CDN 引用,由于是完整构建, 因此可使用template选项, 如:


<script src="https://unkpg.com/vue/dist/vue.js"></script>
<script>
new Vue({
 template: `
   <div id="app">
     <h1>Hi Vue</h1>
   </div>
 `
}).$mount('#app')
</script>


vue.min.js和 vue.js 同样, 属于压缩后版本


vue.runtime.common.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')
vue.runtime.esm.js


vue.runtime.esm.js属于: 基于 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')


vue.runtime.js属于: 基于 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.min.js和 vue.runtime.js 同样, 属于压缩后版本


总之记住一句话,完整构建时是可使用template选项的,而运行时构建是不可使用的,可是不论哪种,单文件组件均可以编译为组件。 UMD规范适用于浏览器直接引用,不用打包。CommonJS 和 ES Module规范都须要相似webpack和rollup之类的打包工具配合才能使用。


这里留给你们一个思考题,在用vue-cli构建vue项目时,通常会有一个选项,以下:



这两个选项有什么不一样呢?欢迎你们踊跃留言,答案下一篇文章揭晓。

本文分享自微信公众号 - nodejs全栈开发(geekclass)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索