当前位置: 移动技术网 > IT编程>脚本编程>vue.js > 理顺8个版本vue的区别(小结)

理顺8个版本vue的区别(小结)

2018年09月23日  | 移动技术网IT编程  | 我要评论

佛本是道5200,盆栽,酒色wang

一共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
  }),

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网