Vite
, webpack
webpack
會先打包
,然後啟動開發伺服器,請求伺服器時直接給予打包結果。Vite
是直接啟動
開發伺服器,請求哪個模組再對該模組進行實時編譯
。Vite
當改動了一個模組後,僅需讓瀏覽器重新請求該模組即可,不像webpack
那樣需要把該模組的相關依賴模組全部編譯一次,效率更高。vue-class-component
Vite
的優勢越明顯。TypeScript
/ less
/ sass
/ stylus
/ postcss
(需要單獨安裝所對應的編譯器)webpack
成熟,無法做到太細部的調整。webpack
龐大,遇到問題90%需要自己解決(但現在有越來越好)。vue-class-component
.env文檔的自定義環境變數以
VITE_
為前綴詞命名
Vite
預設沒有process.env
,必須另外設定。它有專門的屬性import.meta
除了我們自行定義的環境變數,Vite 還有內建四個它設定的環境變數讓我們運用:
import.meta.env.MODE
:應用運行的模式。import.meta.env.BASE_URL
:部署應用時的基本 URL。它由 base 配置項決定。import.meta.env.PROD
:應用是否運行在生產環境。import.meta.env.DEV
:應用是否運行在開發環境(永遠與 import.meta.env.PROD
相反)。圖片在js引入方法
import.meta.url
是一個 ESM 的原生功能,會暴露當前模塊的 URL。將它與原生的 URL 構造器 組合使用,在一個 JavaScript 模塊中,通過相對路徑我們就能得到一個被完整解析的靜態資源 URL–-節錄於vite官網
.env文檔的自定義環境變數以
VUE_APP
為前綴詞命名
1.拿取環境變數的方法為process.env.VUE_APP_YOUR_NAME
2. 圖片在js引入方法
引入interface
、type
型別時,需要前面加個type
做引入,enum
則要分開引入
否則會噴這個錯誤
Does not provide an export named vue
不管是interface
、type
或enum
都可以一起引入。
官方解析:Rollup 是一個 JavaScript 模塊打包器,可以將小塊代碼編譯成大塊複雜的代碼,例如 library 或應用程序。
官方解析:webpack 是一個現代 JavaScript 應用程序的靜態模塊打包器(module bundler)。當 webpack 處理應用程序時,它會遞歸地構建一個依賴關係圖(dependency graph),其中包含應用程序需要的每個模塊,然後將所有這些模塊打包成一個或多個 bundle。
rollup
偏向應用於js庫,webpack
偏向應用於前端工程,UI庫;
如果你的應用場景中只是js代碼,希望做ES轉換,模塊解析,可以使用Rollup
。
如果你的場景中涉及到css
、html
,涉及到復雜的代碼拆分合併,建議使用webpack
。
Vite
在一些細部調整上(像是打包時指定資料夾不要加hash)還是無法完全取代webpack
,生態還不夠完整。
根據Vite 实践:Vue 旧项目迁移內文敘述,chunkFileNames
,assetFileNames
拿不到具體路徑,目前沒有解決方法。
官網類可以直上Vite
(如果不須太細部的調整)。
後台建議保留webpack
dev & build 的能力, Vite
僅作為開發的輔助,等相關工具再完善一些, 再考慮完全遷移過來。