理顺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闭包入门示例
Apr 30 Javascript
基于JS实现Android,iOS一个手势动画效果
Apr 27 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
Dec 11 Javascript
微信小程序实现简单跑马灯效果
May 26 Javascript
vue2.0 如何在hash模式下实现微信分享
Jan 22 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
Sep 18 Javascript
JavaScript Window窗口对象属性和使用方法
Jan 19 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
Apr 14 Javascript
vue+elementUI 实现内容区域高度自适应的示例
Sep 26 Javascript
微信小程序实现拼图小游戏
Oct 22 Javascript
js实现简易计算器小功能
Nov 18 Javascript
Js利用正则表达式去除字符串的中括号
Nov 23 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函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
详解JavaScript逻辑Not运算符
2015/12/04 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
微信小程序 wxapp内容组件 text详细介绍
2016/10/31 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
2017/10/24 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
简单的Python人脸识别系统
2020/07/14 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
德国鞋子网上商店:Omoda.de
2017/03/31 全球购物
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
硕士研究生自我鉴定
2013/11/08 职场文书
策划创业计划书
2014/02/06 职场文书
学生操行评语大全
2014/04/24 职场文书
承租经营合作者协议书
2014/10/01 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
2015年教师节活动总结
2015/03/20 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
python 下载文件的几种方式分享
2021/04/07 Python
新手初学Java网络编程
2021/07/07 Java/Android
把77A收信机改造成收音机
2022/04/05 无线电
Python实现仓库管理系统
2022/05/30 Python