理顺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 相关文章推荐
Javascript 入门基础学习
Mar 10 Javascript
在JQuery dialog里的服务器控件 事件失效问题
Dec 08 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
Jan 23 Javascript
js实现单行文本向上滚动效果实例代码
Nov 28 Javascript
上传图片js判断图片尺寸和格式兼容IE
Sep 01 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
Oct 17 Javascript
jQuery根据ID、CLASS、等获取对象的实例
Dec 04 Javascript
关于Javascript中document.cookie的使用
Mar 08 Javascript
详解node HTTP请求客户端 - Request
May 05 Javascript
Angular使用Md5加密的解决方法
Sep 16 Javascript
微信小程序云开发 搭建一个管理小程序
May 17 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
Aug 03 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
wamp服务器访问php非常缓慢的解决过程
2015/07/01 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
Convert Seconds To Hours
2007/06/16 Javascript
IE iframe的onload方法分析小结
2010/01/07 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
js 动态校验开始结束时间的实现代码
2020/05/25 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
基于vue+echarts数据可视化大屏展示的实现
2020/12/25 Vue.js
python 实现插入排序算法
2012/06/05 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
详解python中requirements.txt的一切
2017/03/03 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
Python基本socket通信控制操作示例
2019/01/30 Python
python3中property使用方法详解
2019/04/23 Python
python跳出双层for循环的解决方法
2019/06/24 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
大学生演讲稿范文
2014/01/11 职场文书
工程承诺书怎么写
2014/05/24 职场文书
班级文化建设标语
2014/06/23 职场文书
个人典型事迹材料
2014/12/30 职场文书
学雷锋倡议书
2015/01/19 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
禁毒主题班会教案
2015/08/14 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL