解析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 相关文章推荐
两种WEB下的模态对话框 (asp.net或js的分别实现)
Dec 02 Javascript
js修改地址栏URL参数解决url参数问题
Dec 15 Javascript
node.js中的fs.renameSync方法使用说明
Dec 16 Javascript
js获取json元素数量的方法
Jan 27 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
Nov 15 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
Jul 09 Javascript
AngularJS入门教程之服务(Service)
Jul 27 Javascript
vue-cli入门之项目结构分析
Apr 20 Javascript
详解VUE单页应用骨架屏方案
Jan 17 Javascript
Vue-CLI项目中路由传参的方式详解
Sep 01 Javascript
VSCode搭建React Native环境
May 07 Javascript
javascript实现时钟动画
Dec 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
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
php使用MySQL保存session会话的方法
2015/06/26 PHP
php+mysql实现无限级分类
2015/11/11 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
2017/01/20 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
2017/08/30 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
浏览器事件循环与vue nextTicket的实现
2019/04/16 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
详解NodeJs项目 CentOs linux服务器线上部署
2019/09/16 NodeJs
详解JS预解析原理
2020/06/16 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
简介Django框架中可使用的各类缓存
2015/07/23 Python
python 性能提升的几种方法
2016/07/15 Python
python实现逻辑回归的方法示例
2017/05/02 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
python 自动重连wifi windows的方法
2018/12/18 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
NET程序员上机面试题
2015/05/23 面试题
大学军训感言
2014/01/10 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书
初二学生评语大全
2014/12/26 职场文书
承诺书范本大全
2015/05/04 职场文书
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python