理顺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 相关文章推荐
jquery选择器大全 全面详解jquery选择器
Mar 06 Javascript
javascript中的throttle和debounce浅析
Jun 06 Javascript
jQuery验证插件 Validate详解
Nov 20 Javascript
iframe中子父类窗口调用JS的方法及注意事项
Aug 25 Javascript
基于jQuery实现的菜单切换效果
Oct 16 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
May 31 Javascript
慕课网题目之js实现抽奖系统功能
Sep 19 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
Sep 26 Javascript
JavaScript中发出HTTP请求最常用的方法
Jul 12 Javascript
微信小程序版本自动更新的方法
Jun 14 Javascript
JS实现简易留言板增删功能
Feb 08 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 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 设计模式之观察者模式介绍
2012/02/22 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
PHP实现本地图片转base64格式并上传
2020/05/29 PHP
doctype后如何获得body.clientHeight的方法
2007/07/11 Javascript
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
js获取url参数代码实例分享(JS操作URL)
2013/12/13 Javascript
jquery提交form表单简单示例分享
2014/03/03 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
javascript转换静态图片,增加粒子动画效果
2015/05/28 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
2020/03/13 Javascript
vue实现选中效果
2020/10/07 Javascript
基于element-ui封装表单金额输入框的方法示例
2021/01/06 Javascript
Python常用知识点汇总
2016/05/08 Python
你所不知道的Python奇技淫巧13招【实用】
2016/12/14 Python
PyQt实现界面翻转切换效果
2018/04/20 Python
python3.6的venv模块使用详解
2018/08/01 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
环境工程专业自荐信范文
2014/03/18 职场文书
《开国大典》教学反思
2014/04/19 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书