理順8個版本vue的區分

理順8個版本vue的區分

一共8個版本的vue

《理順8個版本vue的區分》

  • 一共8個vue版本,都是用在什麼狀況下的?
  • 默許會用的哪一個vue版本,vue-cli里用的哪一個版本?
  • 怎樣指定運用哪一個版本的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
    }),
    原文作者:Ziwei
    原文地址: https://segmentfault.com/a/1190000014310246
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞