隨着項目的複雜度升級,代碼規範和管理就必需要同步提高。因而,編程社區中提出了多種模塊化規範,服務端選擇了 CommonJS 規範,客戶端選擇 AMD 規範較多,可是,兩種模塊化規範也都存在必定的問題,都是 JS 編程,有兩個不一樣的模塊化規範,在 JS 語言層面仍是不夠的,終於在 ES6 中,ECMA 委員會推出了語言層面模塊系統:ES Modules 規範前端
模塊化能夠幫助咱們更好地解決複雜應用開發過程當中的代碼組織問題,可是隨着模塊化思想的引入,咱們的前端應用又會產生了一些新的問題,好比:vue
對於開發過程而言,模塊化確定是必要的,因此咱們須要在前面所說的模塊化實現的基礎之上引入更好的方案或者工具,去解決上面提出的 3 個問題,讓咱們的應用在開發階段繼續享受模塊化帶來的優點,又沒必要擔憂模塊化對生產環境所產生的影響webpack
本質上,webpack 是一個現代 JavaScript 應用程序的靜態模塊打包器(module bundler)web
Vue 腳手架工具 vue-cli 使用 webpack 進行打包,開發時能夠啓動本地開發服務器,實時預覽。由於須要對整個項目文件進行打包,開發服務器啓動緩慢vue-cli
而對於開發時文件修改後的熱更新 HMR 也存在一樣的問題編程
Webpack 的熱更新會以當前修改的文件爲入口從新 build 打包,全部涉及到的依賴也都會被從新加載一次瀏覽器
Vite 則很好地解決了上面的兩個問題緩存
vite 只啓動一臺靜態頁面的服務器,對文件代碼不打包,服務器會根據客戶端的請求加載不一樣的模塊處理,實現真正的按需加載服務器
vite 採用當即編譯當前修改文件的辦法。同時 vite 還會使用緩存機制( http 緩存 => vite 內置緩存 ),加載更新後的文件內容網絡
因此,vite 具備了快速冷啓動、按需編譯、模塊熱更新等優良特質
綜上所述,vite 構建項目與 vue-cli 構建的項目在開發模式下仍是有比較大的區別: