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


Posted in Javascript onNovember 22, 2017

vue2 经过 2.2 版本升级后, 文件变成了 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 个作用都用在什么场景, 有什么区别

按照构建方式分, 可以分成 完整构建(包含独立构建和运行时构建) 和 运行时构建

按照规范分, 可以分成 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

属于: 基于 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 一样, 属于压缩后版本

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 拖拉缩放效果
Dec 10 Javascript
有道JavaScript监听浏览器的问题
Jun 23 Javascript
js格式化货币数据实现代码
Sep 04 Javascript
jQuery中:gt选择器用法实例
Dec 29 Javascript
js实现页面跳转的几种方法小结
May 16 Javascript
jquery选择器中的空格与大于号&gt;、加号+与波浪号~的区别介绍
Jun 24 Javascript
jQuery中deferred对象使用方法详解
Jul 14 Javascript
将JSON字符串转换成Map对象的方法
Nov 30 Javascript
ES6新数据结构Set与WeakSet用法分析
Mar 31 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
Jun 26 jQuery
使用 Javascript 实现浏览器推送提醒功能的示例
Nov 03 Javascript
小程序点餐界面添加购物车左右摆动动画
Sep 23 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
Nov 22 #Javascript
echarts学习笔记之图表自适应问题详解
Nov 22 #Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
Nov 22 #Javascript
在vue中添加Echarts图表的基本使用教程
Nov 22 #Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
Nov 22 #Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
Nov 22 #Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
Nov 22 #Javascript
You might like
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
从零学习node.js之模块规范(一)
2017/02/21 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
Python 学习笔记
2008/12/27 Python
总结Python编程中函数的使用要点
2016/03/20 Python
Python操作MongoDB详解及实例
2017/05/18 Python
go和python变量赋值遇到的一个问题
2017/08/31 Python
Python通过future处理并发问题
2017/10/17 Python
浅析Python四种数据类型
2018/09/26 Python
python组合无重复三位数的实例
2018/11/13 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
Python 在局部变量域中执行代码
2020/08/07 Python
为什么会有内存对齐
2016/10/10 面试题
大学生军训广播稿
2014/01/24 职场文书
小学生学习雷锋倡议书
2014/05/15 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
Python实现PIL图像处理库绘制国际象棋棋盘
2021/07/16 Python
python 判断文件或文件夹是否存在
2022/03/18 Python
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android