解析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 相关文章推荐
jquery Firefox3.5中操作select的问题
Jul 10 Javascript
jquery分页插件jquery.pagination.js使用方法解析
Apr 01 Javascript
js ajaxfileupload.js上传报错的解决方法
May 05 Javascript
分享JS数组求和与求最大值的方法
Aug 11 Javascript
关于JavaScript和jQuery的类型判断详解
Oct 08 Javascript
jQuery实现鼠标跟随效果
Feb 20 Javascript
bootstrap table 多选框分页保留示例代码
Mar 08 Javascript
node打造微信个人号机器人的方法示例
Apr 26 Javascript
详解从Vue-router到html5的pushState
Jul 21 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
May 08 Javascript
vue-form表单验证是否为空值的实例详解
Oct 29 Javascript
用javascript实现倒计时效果
Feb 09 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
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
PHP面向对象编程快速入门
2006/10/09 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
JQuery 操作select标签实现代码
2010/05/14 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
python实现ip地址的包含关系判断
2020/02/07 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
python实现与redis交互操作详解
2020/04/21 Python
pandas apply多线程实现代码
2020/08/17 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
吸烟检讨书2000字
2014/02/13 职场文书
矿泉水广告词
2014/03/20 职场文书
化工实习心得体会
2014/09/09 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
求职信范文怎么写
2015/03/19 职场文书
2015年工商局个人工作总结
2015/07/23 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
Django路由层如何获取正确的url
2021/07/15 Python
Go 中的空白标识符下划线
2022/03/25 Golang
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android