理顺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 学习笔记 防止发生命名冲突
Jul 30 Javascript
javascript 设置文本框中焦点的位置
Nov 20 Javascript
javascript基础第一章 JavaScript与用户端
Jul 22 Javascript
打造基于jQuery的高性能TreeView(asp.net)
Feb 23 Javascript
深入理解JavaScript作用域和作用域链
Oct 21 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
Oct 24 Javascript
JS事件在IE与FF中的区别详细解析
Nov 20 Javascript
原生javascript实现无间缝滚动示例
Jan 28 Javascript
整理Javascript数组学习笔记
Nov 29 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
Dec 15 Javascript
angular6开发steps步骤条组件
Jul 04 Javascript
JavaScript数组去重实现方法小结
Jan 17 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 采集程序 常用函数
2008/12/18 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
2020/01/25 PHP
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
Jquery中dialog属性小记
2010/09/03 Javascript
关于jquery append() html时的小问题的解决方法
2010/12/16 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
DOM中事件处理概览与原理的全面解析
2016/08/16 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
代码整洁之道(重构)
2018/10/25 Javascript
vue将单页面改造成多页面应用的方法
2018/11/25 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
python协程用法实例分析
2015/06/04 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
Python切片操作深入详解
2018/07/27 Python
详解python中TCP协议中的粘包问题
2019/03/22 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
.NET面试题:什么是反射
2016/09/30 面试题
六查六看自查报告
2014/10/14 职场文书
2015年质检工作总结
2015/05/04 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python