理顺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 相关文章推荐
List all the Databases on a SQL Server
Jun 21 Javascript
Javascript的一种模块模式
Mar 22 Javascript
JS中怎样判断undefined(比较不错的方法)
Mar 27 Javascript
jQuery实现可用于博客的动态滑动菜单
Mar 09 Javascript
Vue数据驱动模拟实现5
Jan 13 Javascript
微信小程序 开发之顶部导航栏实例代码
Feb 23 Javascript
详解JS获取HTML DOM元素的8种方法
Jun 17 Javascript
Vue.js devtool插件安装后无法使用的解决办法
Nov 27 Javascript
vue组件发布到npm简单步骤
Nov 30 Javascript
微信小程序8种数据通信的方式小结
Feb 03 Javascript
jquery实现简单自动轮播图效果
Jul 29 jQuery
基于vue中的scoped坑点解说
Sep 04 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+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
php使用fopen创建utf8编码文件的方法
2014/10/31 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
python使用socket进行简单网络连接的方法
2015/04/29 Python
举例讲解Python中的算数运算符的用法
2015/05/13 Python
python2.7 mayavi 安装图文教程(推荐)
2017/06/22 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
python读写csv文件方法详细总结
2019/07/05 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
Python数据模型与Python对象模型的相关总结
2021/01/26 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
美国工业用品采购网站:Zoro.com
2020/10/27 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
会计应届生的自荐信
2013/12/13 职场文书
员工考核评语大全
2014/04/26 职场文书
班主任个人工作反思
2014/04/28 职场文书
啦啦队口号大全
2014/06/16 职场文书
预备党员学习十八届三中全会精神思想汇报
2014/09/13 职场文书
工程承包协议书
2014/10/20 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
安全生产会议制度
2015/08/06 职场文书
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python