前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue2 dist 目录下各个文件的区别

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

作者头像
挥刀北上
发布2019-08-06 16:26:17
1.5K0
发布2019-08-06 16:26:17
举报
文章被收录于专栏:Node.js开发Node.js开发
题图 By Clm From Bing

vue2 dist文件夹中有8个文件如下:

  1. vue.common.js
  2. vue.esm.js
  3. vue.js
  4. vue.min.js
  5. vue.runtime.common.js
  6. vue.runtime.esm.js
  7. vue.runtime.js
  8. vue.runtime.min.js

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

Vue项目按照构建方式分, 可以分成 完整构建 和 运行时构建。

按照规范分, 可以分成 UMD, CommonJS 和 ES Module。

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

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

代码语言:javascript
复制
import Vue from 'vue'
new Vue({
  template: `
    <div id="app">
      <h1>Basic</h1>
    </div>
  `
}).$mount('#app')

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

代码语言:javascript
复制
{
  resolve: {
    alias: {
      'vue$': 'vue/dist/vue.common.js'
    }
  }
}

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

代码语言:javascript
复制
import Vue from 'vue'
new Vue({
  template: `
    <div id="app">
      <h1>Basic</h1>
    </div>
  `
}).$mount('#app')

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

代码语言:javascript
复制
{
  resolve: {
    alias: {
      'vue$': 'vue.esm.js'
    }
  }
}

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

代码语言:javascript
复制
<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

代码语言:javascript
复制
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

代码语言:javascript
复制
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函数:

代码语言:javascript
复制
<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项目时,一般会有一个选项,如下:

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 nodejs全栈开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档