解析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开发规范要求(规范化代码)
Aug 16 Javascript
jQuery根据纬度经度查看地图处理程序
May 08 Javascript
深入理解javascript的执行顺序
Apr 04 Javascript
JavaScript生成SQL查询表单的方法
Aug 13 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
Jun 02 Javascript
jQuery简单实现仿京东分类导航层效果
Jun 07 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
Oct 10 Javascript
通过sails和阿里大于实现短信验证
Jan 04 Javascript
AngulerJS学习之按需动态加载文件
Feb 13 Javascript
修改node.js默认的npm安装目录实例
May 15 Javascript
JS数组求和的常用方法实例小结
Jan 07 Javascript
代码解析React中setState同步和异步问题
Jun 03 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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
PHP编程实现脚本异步执行的方法
2017/08/09 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
浅析javascript闭包 实例分析
2010/12/25 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
使用js实现数据格式化
2014/12/03 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
AngularJS教程 ng-style 指令简单示例
2016/08/03 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
python实现FTP服务器服务的方法
2017/04/11 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
成教毕业生自我鉴定
2013/10/23 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
个人整改措施书面材料
2014/10/24 职场文书
护理见习报告范文
2014/11/03 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
班主任班级管理心得体会
2016/01/07 职场文书