理顺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 相关文章推荐
js获取指定日期前后的日期代码
Aug 20 Javascript
JavaScript中关联原型链属性特性
Feb 13 Javascript
jquery ztree实现模糊搜索功能
Feb 25 Javascript
Bootstrap BootstrapDialog使用详解
Feb 17 Javascript
浅谈JavaScript find 方法不支持IE的问题
Sep 28 Javascript
JS使用正则表达式找出最长连续子串长度
Oct 26 Javascript
vue嵌套路由与404重定向实现方法分析
May 04 Javascript
jQuery插件实现弹性运动完整示例
Jul 07 jQuery
vue中设置height:100%无效的问题及解决方法
Jul 27 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
Apr 12 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
Mar 06 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
Jul 26 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边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
adodb与adodb_lite之比较
2006/12/31 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
jQuery each()小议
2010/03/18 Javascript
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
2018/01/08 jQuery
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
详细介绍Python的鸭子类型
2016/09/12 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
python通过http下载文件的方法详解
2019/07/26 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
党员年终民主评议的自我评价
2013/11/05 职场文书
测试工程师岗位职责
2013/11/28 职场文书
投标承诺书怎么写
2014/05/24 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
2014年纪委工作总结
2014/12/05 职场文书
长城导游词300字
2015/01/30 职场文书
计算机教师工作总结
2015/08/13 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
导游词之永泰公主墓
2019/12/04 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
vue中 this.$set的使用详解
2021/11/17 Vue.js