解析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 remove 自定义数组删除方法
Oct 20 Javascript
javascript实现可改变滚动方向的无缝滚动实例
Jun 17 Javascript
调整小数的格式保留小数点后两位
May 14 Javascript
javascript常用方法汇总
Dec 02 Javascript
详解Javascript中的原型OOP
Oct 12 Javascript
bootstrap fileinput实现文件上传功能
Aug 23 Javascript
vue项目tween方法实现返回顶部的示例代码
Mar 02 Javascript
vue-cli配置全局sass、less变量的方法
Jun 06 Javascript
微信小程序移动拖拽视图-movable-view实例详解
Aug 17 Javascript
react native 仿微信聊天室实例代码
Sep 17 Javascript
Element Popover 弹出框的使用示例
Jul 26 Javascript
原生js实现拖拽移动与缩放效果
Aug 24 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
PHP中,文件上传
2006/12/06 PHP
ajax取消挂起请求的处理方法
2013/03/18 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
JavaScript获取并更改input标签name属性的方法
2015/07/02 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
总结在前端排序中遇到的问题
2016/07/19 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
python如何实现不可变字典inmutabledict
2020/01/08 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
《小石潭记》教学反思
2014/02/13 职场文书
灵山大佛导游词
2015/02/04 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书
vue+iview实现手机号分段输入框
2022/03/25 Vue.js
MySQL 数据库范式化设计理论
2022/04/22 MySQL