理顺8个版本vue的区别(小结)


Posted in Javascript onSeptember 17, 2018

一共8个版本的vue

理顺8个版本vue的区别(小结)

术语

  • 完整版:同时包含编译器和运行时的版本。
  • 编译器:用来将模板字符串编译成为 JavaScript 渲染函数的代码。
  • 运行时:用来创建 Vue 实例、渲染并处理虚拟 DOM 等的代码。基本上就是除去编译器的其它一切。
  • UMD:UMD 版本可以通过 <script> 标签直接用在浏览器中。jsDelivr CDN 的 https://cdn.jsdelivr.net/npm/vue 默认文件就是运行时 + 编译器的 UMD 版本 (vue.js)。
  • CommonJS:CommonJS 版本用来配合老的打包工具比如 Browserify 或 webpack 1。这些打包工具的默认文件 (pkg.main) 是只包含运行时的 CommonJS 版本 (vue.runtime.common.js)。
  • ES Module:ES module 版本用来配合现代打包工具比如 webpack 2 或 Rollup。这些打包工具的默认文件 (pkg.module) 是只包含运行时的 ES Module 版本 (vue.runtime.esm.js)。

重点:

如果你需要在客户端编译模板 (比如传入一个字符串给 template 选项,或挂载到一个元素上并以其 DOM 内部的 HTML 作为模板),就将需要加上编译器

通俗来说,就是runtime版本是无法对template进行解析的

一共8个vue版本,都是用在什么情况下的?

  1. 默认会用的哪个vue版本,vue-cli里用的哪个版本?
  2. 如何指定使用哪个版本的vue?

不急,从2个维度去理解这8个版本。

  • 根据是否需要编译器分为: 运行时版本 和 完整版
  • 根据这个vue代码用在什么地方: 分为UMD / CommonJS / ES Module

【运行时版本】和【完整版】的区别: 用不用编译?

  • 完整版: 包括编译器和运行时的版本
  • 编译器: vue里用的<template></template>语法是需要被编译的
  • 运行时: 用来创建Vue实例、渲染、处理虚拟Dom,可以理解为除了编译器剩下的代码都属于运行时

如果你需要使用template的语法,就需要编译器,那么就要使用完整版

用了.vue文件的大多数情况下,你可以用运行时版本

当你使用vue-loader或vueify的时候, *.vue文件内部会预编译成JS,所以你在最终打好的包里,

实际上是不需要编译器的,所以这种情况,应该用运行时版本,毕竟运行时版本的体积比完整版要小30%

如果我一定要用完整版的呢? 如何选择版本呢?

你需要在webpack里配置alias

module.exports = {
 // ...
 resolve: {
  alias: {
   'vue$': 'vue/dist/vue.esm.js' // 用 webpack 1 时需用 'vue/dist/vue.common.js'
  }
 }
}

UMD / CommonJS / ES Module 的区别: 你的vue用在什么地方?

  • 当你通过script标签来引用vue源码时,用UMD版本
  • 当你通过低版本的打包工具,比如webpack1,用CommonJS版本
  • 当你通过现代打包工具比如 webpack 2 或 Rollup,用ES Module版本

其他

  • vue源码会根据process.env.NODE_ENV来判断是用生产还是开发环境的代码
  • webpack里可以有自带的 new webpack.DefinePlugin()来设置process.env.NODE_ENV

类似这样

new webpack.DefinePlugin({
   'process.env': env
  }),

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

Javascript 相关文章推荐
图片onload事件触发问题解决方法
Jul 31 Javascript
动态创建样式表在各浏览器中的差异测试代码
Sep 13 Javascript
js当一个变量为函数时 应该注意的一点细节小结
Dec 29 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
Jan 04 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
Jan 27 Javascript
js 固定悬浮效果实现思路代码
Aug 02 Javascript
javasctipt如何显示几分钟前、几天前等
Apr 30 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
Dec 14 Javascript
性能优化篇之Webpack构建速度优化的建议
Apr 03 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 Javascript
js实现小时钟效果
Mar 25 Javascript
Vue 自适应高度表格的实现方法
May 13 Javascript
vue.js编译时给生成的文件增加版本号
Sep 17 #Javascript
详解关于Vue版本不匹配问题(Vue packages version mismatch)
Sep 17 #Javascript
详解如何解决Vue和vue-template-compiler版本之间的问题
Sep 17 #Javascript
微信小程序中this.data与this.setData的区别详解
Sep 17 #Javascript
Puppet的一些技巧
Sep 17 #Javascript
详解JavaScript添加给定的标签选项
Sep 17 #Javascript
Element-ui tree组件自定义节点使用方法代码详解
Sep 17 #Javascript
You might like
php结合表单实现一些简单功能的例子
2011/06/04 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
CodeIgniter删除和设置Cookie的方法
2015/04/07 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
jQuery中index()方法用法实例
2014/12/27 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
总结Python编程中三条常用的技巧
2015/05/11 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
Django模型序列化返回自然主键值示例代码
2019/06/12 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
2019/07/11 Python
Python 基于FIR实现Hilbert滤波器求信号包络详解
2020/02/26 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
python ETL工具 pyetl
2020/06/07 Python
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
干部下基层实施方案
2014/03/14 职场文书
《锄禾》教学反思
2014/04/08 职场文书
Python利用zhdate模块实现农历日期处理
2022/03/31 Python
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电