Vue打包后不同版本詳細(xì)解析
vue源碼打包版本
這里選取我們開發(fā)中常見的幾個(gè)版本進(jìn)行說明。

1、vue(.runtime).global(.prod).js
- 在html頁面中通過 <script src=“...”> 標(biāo)簽直接使用。
- 通過CDN引入和npm下載的Vue就是這個(gè)版本。
- 會暴露一個(gè)全局的Vue來使用。
(.runtime)和(.pro)表示可選項(xiàng),分別指特定的運(yùn)行時(shí)版本和生產(chǎn)版本。
2、vue(.runtime).esm-browser(.prod).js
- 用于通過原生ES模塊導(dǎo)入使用 (在瀏覽器中通過 <script type="module"> 來使用)。
3、vue(.runtime).esm-bundler.js
- 用于 webpack,rollup 和 parcel 等構(gòu)建工具。
- 構(gòu)建工具中默認(rèn)是vue.runtime.esm-bundler.js。
- 如果我們需要解析模板template,那么需要手動(dòng)指定vue.esm-bundler.js。
這里就清楚了為什么webpack對vue代碼打包時(shí),查看運(yùn)行的控制臺會出現(xiàn)下面一段警告信息:

// 默認(rèn)引入的是 vue.runtime.esm-bundler.js 版本
import { createApp } from 'vue';
// 修改為 vue.esm-bundler 版本
import { createApp } from 'vue/dist/vue.esm-bundler';4、vue.cjs(.prod).js
- 服務(wù)器端渲染使用。
- 通過require()在Node.js中使用。
運(yùn)行時(shí)+編譯器 vs 僅運(yùn)行時(shí)
對應(yīng)著 runtime+compiler 和 runtime-only。
在Vue的開發(fā)過程中我們有三種方式來編寫DOM元素:
- 方式一:template模板的方式(之前經(jīng)常使用的方式)。
- 方式二:render函數(shù)的方式,使用h函數(shù)來編寫渲染的內(nèi)容。
- 方式三:通過.vue文件(SFC)中的template來編寫模板。
三種方式的模板如何處理:
- 方式二中的h函數(shù)可以直接返回一個(gè)虛擬節(jié)點(diǎn),也就是Vnode節(jié)點(diǎn)。
而方式一和方式三的template都需要有 特定的代碼 來對其進(jìn)行解析:
- 方式三.vue文件中的template可以通過在vue-loader對其進(jìn)行編譯和處理。
- 方式一種的template我們必須要通過源碼中一部分代碼來進(jìn)行編譯。
因此Vue在選擇版本的時(shí)候分為 運(yùn)行時(shí)+編譯器 vs 僅運(yùn)行時(shí)
運(yùn)行時(shí)+編譯器 包含了對template模板的編譯代碼,更加完整,但是也更大一些;
僅運(yùn)行時(shí) 沒有包含對template版本的編譯代碼,相對更小一些。
Bundler 構(gòu)建功能標(biāo)志

針對以上警告,參閱https://github.com/vuejs/core/blob/main/packages/vue/README.md

貼出對于webpack構(gòu)建工具的配置示例:

附:VSCode對SFC文件的支持
SFC:single-file components (單文件組件)
plugin1:Vetur——從Vue2開發(fā)就一直在使用的,支持Vue的插件。
plugin2:Volar——官方推薦的插件(后續(xù)會基于Volar開發(fā)官方的VSCode插件)。
總結(jié)
到此這篇關(guān)于Vue打包后不同版本詳細(xì)解析的文章就介紹到這了,更多相關(guān)Vue打包后版本解析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue-cli webpack2項(xiàng)目打包優(yōu)化分享
下面小編就為大家分享一篇vue-cli webpack2項(xiàng)目打包優(yōu)化,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02
vue在項(xiàng)目中實(shí)現(xiàn)base64加密解密的示例代碼
這篇文章主要為大家詳細(xì)介紹了vue在項(xiàng)目中實(shí)現(xiàn)base64加密解密的兩種方法,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,有需要的小伙伴可以了解一下2023-10-10
Vue.js 2.0和Cordova開發(fā)webApp環(huán)境搭建方法
下面小編就為大家分享一篇Vue.js 2.0和Cordova開發(fā)webApp環(huán)境搭建方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02
vue-cli4項(xiàng)目開啟eslint保存時(shí)自動(dòng)格式問題
這篇文章主要介紹了vue-cli4項(xiàng)目開啟eslint保存時(shí)自動(dòng)格式的問題小結(jié),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
淺談實(shí)現(xiàn)vue2.0響應(yīng)式的基本思路
這篇文章主要介紹了淺談實(shí)現(xiàn)vue2.0響應(yīng)式的基本思路,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02
Vue中slot-scope的深入理解(適合初學(xué)者)
這篇文章主要給大家介紹了關(guān)于Vue中slot-scope的深入理解,這個(gè)教程非常適合初學(xué)者,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Vue通過provide inject實(shí)現(xiàn)組件通信
這篇文章主要介紹了Vue通過provide inject實(shí)現(xiàn)組件通信,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09

