理顺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 dialog 异步调用ashx,webservice数据的代码
Aug 03 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
Jul 09 Javascript
JS字符串处理实例代码
Aug 05 Javascript
Script标签与访问HTML页面详解
Jan 10 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
Dec 30 Javascript
分享jQuery插件的学习笔记
Jan 14 Javascript
浅谈js中字符和数组一些基本算法题
Aug 15 Javascript
javascript加载xml 并解析各节点的值(实现方法)
Oct 12 Javascript
原生js轮播特效
May 18 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
Sep 14 Javascript
微信小程序实现下拉刷新和轮播图效果
Nov 21 Javascript
vue移动端项目缓存问题实践记录
Oct 29 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
计数器详细设计
2006/10/09 PHP
php str_pad 函数使用详解
2009/01/13 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
用javascript实现给图片加链接
2007/08/15 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
python正则表达式match和search用法实例
2015/03/26 Python
python实现下载文件的三种方法
2017/02/09 Python
Python递归函数实例讲解
2019/02/27 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
python利用线程实现多任务
2020/09/18 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
用CSS3的box-reflect来制作倒影效果
2016/11/15 HTML / CSS
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
品牌宣传方案
2014/03/21 职场文书
志愿者活动总结范文
2014/04/26 职场文书
医院义诊活动总结
2014/07/04 职场文书
单位租房协议范本
2014/12/03 职场文书
售票员岗位职责
2015/02/15 职场文书
学校中秋节活动总结
2015/03/23 职场文书
加班费申请报告
2015/05/15 职场文书
民事起诉书范本
2015/05/19 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书