第1章 認識 Vite

明白了,這里是第1章內容的詳細展開版本:


第1章 認識 Vite

1 . 什么是 Vite

Vite 是一個由尤雨溪(Vue.js 的創始人)開發的前端構建工具,旨在提供極快的開發體驗。Vite 的名字來源于法語,意為“快速”,這正是它的核心理念。

1 傳統構建工具的挑戰

傳統的構建工具(如 Webpack、Parcel 等)通常需要通過打包所有資源來啟動開發服務器,這對于大型項目而言可能會變得緩慢。每次修改代碼時,開發者都需要等待文件重新打包,這會嚴重影響開發效率。

打包時間長

傳統工具在啟動時需要打包整個項目的所有資源,包括 JavaScript、CSS、圖片等。這在大型項目中會導致長時間的等待,影響開發者的效率。

熱更新效率低

每次修改代碼后,傳統工具需要重新打包受影響的模塊,并在瀏覽器中重新加載。這種方式雖然能保持應用的狀態,但速度較慢,體驗不夠流暢。

2 Vite 的核心理念

Vite 通過原生 ES 模塊(ESM)提供了一個全新的構建思路。在開發環境中,Vite 使用瀏覽器的原生 ESM 功能來實現即時的模塊解析和加載。生產環境下,Vite 則使用 Rollup 進行優化和打包,從而兼顧了開發體驗和生產性能。

ES 模塊支持

現代瀏覽器已經支持 ES 模塊,這意味著可以直接在瀏覽器中使用 import/export 語法。Vite 利用這一特性,在開發時避免了傳統的打包步驟,實現了即時的模塊加載。

按需加載

Vite 在開發時只處理當前頁面實際用到的模塊,其他模塊按需加載。這極大地縮短了啟動時間和熱更新時間。

2 . Vite 的特點和優勢

2.1 極速啟動

Vite 利用瀏覽器原生支持的 ES 模塊功能,實現了按需加載,不需要像傳統工具那樣預先打包所有資源,這使得開發服務器啟動時間非常短,即使在大型項目中也能做到秒級啟動。

瀏覽器原生模塊

Vite 通過瀏覽器原生支持的 ES 模塊功能,實現了無需打包的即時模塊加載。瀏覽器會根據 import 語句動態加載模塊,減少了啟動時的處理量。

快速冷啟動

由于 Vite 不需要在啟動時打包所有資源,冷啟動時間顯著縮短。即使在大型項目中,開發服務器的啟動時間也能保持在幾秒內。

2.2 快速熱更新

通過模塊熱替換(HMR),Vite 可以在不刷新頁面的情況下替換、添加或刪除模塊,從而保持應用程序狀態。這極大地提升了開發體驗和效率。

HMR 原理

Vite 使用 WebSocket 監聽文件變化,當檢測到文件變化時,通過模塊熱替換機制(HMR)只替換發生變化的模塊,而不刷新整個頁面。這樣可以保持應用的狀態,提升開發體驗。

實時反饋

由于 HMR 的存在,開發者在修改代碼后可以立即在瀏覽器中看到效果,減少了開發和調試的時間。

2.3 開箱即用的現代特性

Vite 內置了對 TypeScript、JSX、CSS Modules、PostCSS 等現代前端開發特性的支持,減少了開發者的配置工作。

內置支持

Vite 開箱即用地支持 TypeScript、JSX、CSS Modules、PostCSS 等現代前端開發技術。開發者無需額外配置,即可直接使用這些特性,提升開發效率。

易于擴展

Vite 的配置文件(vite.config.js)簡潔且靈活,開發者可以根據項目需求進行自定義配置,擴展 Vite 的功能。

2.4 插件系統

Vite 擁有強大的插件系統,可以通過插件輕松擴展其功能。它的插件 API 靈活且易于使用,允許開發者編寫自定義插件來滿足特定需求。

插件機制

Vite 的插件系統基于 Rollup 插件 API,支持所有 Rollup 插件,同時提供了 Vite 特有的插件接口。插件可以攔截和處理 Vite 的構建流程,擴展其功能。

社區支持

Vite 社區提供了豐富的插件庫,涵蓋了從代碼轉換、優化到開發輔助的各個方面。開發者可以從社區中找到適合自己項目的插件,進一步提升開發體驗。

3 . 與其他構建工具的對比

3.1 Vite vs. Webpack

Webpack 是一個功能強大且廣泛使用的構建工具,但其配置復雜且啟動時間較長。相比之下,Vite 的配置更簡單,啟動速度更快,非常適合現代前端開發需求。

配置復雜度

Webpack 需要詳細的配置文件(webpack.config.js)來定義打包規則,而 Vite 的默認配置已經足夠應對大多數場景,開發者只需進行少量配置即可使用。

啟動速度

由于 Vite 利用了瀏覽器的原生模塊支持,其開發服務器啟動速度遠快于 Webpack,特別是在大型項目中優勢更加明顯。

3.2 Vite vs. Parcel

Parcel 是一個零配置的打包工具,注重開發者體驗。雖然 Parcel 提供了快速的打包速度,但在開發環境下,Vite 的即時模塊加載和 HMR 性能表現更為優越。

零配置

Parcel 提供了零配置的使用體驗,但在需要自定義配置時,Parcel 的配置靈活性不如 Vite。Vite 的配置文件更加直觀,擴展性更強。

開發體驗

Vite 的即時模塊加載和高效的 HMR 使得開發體驗更佳,開發者可以在代碼修改后立即看到效果,而不需要等待打包完成。

3.3 Vite vs. Rollup

Rollup 主要用于庫打包,注重輸出代碼的質量和體積。Vite 在生產環境下使用 Rollup 進行打包,但在開發環境下提供了更好的開發體驗。

打包優化

Rollup 以其高效的代碼分割和優化能力著稱,適合用于生產環境的打包。而 Vite 在開發環境中使用原生 ES 模塊,實現了更快的啟動和熱更新。

兩者結合

Vite 在開發環境下提供快速的模塊加載和 HMR,在生產環境下通過 Rollup 進行優化和打包,兼顧了開發體驗和生產性能。

4 . Vite 的應用場景

4.1 單頁應用(SPA)

Vite 非常適合單頁應用開發,特別是使用現代前端框架(如 Vue、React、Svelte 等)的項目。它的快速啟動和熱更新特性可以顯著提高開發效率。

Vue 框架

由于 Vite 是由 Vue.js 的創始人開發的,它對 Vue 的支持非常完善。Vue 開發者可以享受到最佳的開發體驗和工具集成。

React 框架

Vite 對 React 也有良好的支持,內置了 JSX 和 TypeScript 支持,React 開發者可以輕松上手。

4.2 多頁應用(MPA)

雖然 Vite 主要面向 SPA,但它也可以很好地支持多頁應用開發。通過簡單的配置,可以讓 Vite 處理多個入口點,實現多頁面的按需加載。

多入口配置

Vite 支持通過配置多個入口點來實現多頁應用的開發。開發者可以在配置文件中定義不同的頁面入口,實現按需加載和獨立構建。

4.3 靜態網站生成

Vite 可以與靜態網站生成器(如 VitePress、Gatsby 等)結合使用,為靜態網站提供快速的開發體驗和高效的構建性能。

VitePress

VitePress 是基于 Vite 的靜態網站生成器,特別適合用于文檔和博客網站。它利用 Vite 的優勢,實現了快速構建和熱更新。

其他生成器

Vite 也可以與其他靜態網站生成器(如 Gatsby、Next.js)結合使用,通過插件或自定義配置實現高效的靜態網站開發。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40666.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40666.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40666.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python繪制一維離散點

在Python中,繪制一維離散點通常意味著我們要在一條直線上標記出幾個特定的點。這可以通過多種庫來實現,但最常見和強大的庫之一是matplotlib。以下是一個詳細的代碼示例,它展示了如何使用matplotlib庫來繪制一維離散點,并且這個示…

C++語言常見錯誤分析匯總

在一個工程里出現兩個main函數時 3.obj : error LNK2005: _main already defined in file1.obj Debug/HELLO.exe : fatal error LNK1169: one or more multiply defined symbols found 這個就是說,你的main函數重定義了。你看看是不是你的工程里面,包…

MySQL的Geometry數據處理之WKB方案

MySQL的Geometry數據處理之WKT方案:https://blog.csdn.net/qq_42402854/article/details/140134357 MySQL的Geometry數據處理之WKT方案中,介紹WTK方案的優點,也感受到它的繁瑣和缺陷。比如: 需要借助 ST_GeomFromText和 ST_AsTex…

Spring @Cacheable緩存注解用法說明

注解Cacheable 是 Spring 框架中用于緩存數據的方法或類的注解。通過使用這個注解,你可以避免重復計算和重復獲取數據,從而提高應用程序的性能。 基本用法 引入依賴 確保在你的項目中引入了 Spring Cache 相關的依賴。如果你使用的是 Spring Boot&…

中英雙語介紹中國的城市:上海市(Shanghai)

中文版 上海市是中國最大的城市之一,也是全球重要的金融、貿易和航運中心。作為一座現代化的國際大都市,上海以其繁華的商業區、豐富的文化遺產和多樣化的經濟結構而聞名。以下是對上海市的詳細介紹,包括其地理位置、人口、經濟、教育、文化…

qt結合vs2022安裝

進入清華大學開源軟件: 清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror 下載完成后,雙擊進行安裝: 進入郵箱進行驗證: 可能是因為網絡問題,無法安裝。 重新安裝5.12.12版本。 安裝后啟動失敗,重新…

后端接口設計考慮要點

1. 接口參數校驗 入參校驗:確保必要參數不為空,限制長度和格式(例如郵箱格式)。返回值校驗:確定返回值不為空,為空時返回與前端協商的默認值。 2. 接口擴展性 設計通用接口而非僅針對特定業務流程的接口…

橫截面交易策略:概念與示例

數量技術宅團隊在CSDN學院推出了量化投資系列課程 歡迎有興趣系統學習量化投資的同學,點擊下方鏈接報名: 量化投資速成營(入門課程) Python股票量化投資 Python期貨量化投資 Python數字貨幣量化投資 C語言CTP期貨交易系統開…

數據結構--單鏈表實現

歡迎光顧我的homepage 前言 鏈表和順序表都是線性表的一種,但是順序表在物理結構和邏輯結構上都是連續的,但鏈表在邏輯結構上是連續的,而在物理結構上不一定連續;來看以下圖片來認識鏈表與順序表的差別 這里以動態順序表…

WGAN(Wassertein GAN)

WGAN E x ~ P g [ log ? ( 1 ? D ( x ) ) ] E x ~ P g [ ? log ? D ( x ) ] \begin{aligned} & \mathbb{E}_{x \sim P_g}[\log (1-D(x))] \\ & \mathbb{E}_{x \sim P_g}[-\log D(x)] \end{aligned} ?Ex~Pg??[log(1?D(x))]Ex~Pg??[?logD(x)]? 原始 GAN …

springboot基于Java的超市進銷存系統+ LW+ PPT+源碼+講解

第三章系統分析與設計 3.1 可行性分析 一個完整的系統,可行性分析是必須要有的,因為他關系到系統生存問題,對開發的意義進行分析,能否通過本網站來補充線下超市進銷存管理模式中的缺限,去解決其中的不足等&#xff0c…

6域名系統DNS

《計算機網絡》第7版,謝希仁 每次記不清楚的知識點,通過上網查找,總是只能看到很零碎的答案。最后還是最喜歡看這個版本的書,一看就回憶起來了,邏輯嚴謹,循循善誘,知識講解的全面又清晰&#xf…

架構師應該在團隊中發揮怎樣的作用?

架構師分為5種: 1.企業架構師EA(Enterprise Architect) EA的職責是決定整個公司的技術路線和技術發展方向。 2.基礎結構架構師IA(Infrastructure Architect) IA的工作就是提煉和優化技術方面積累和沉淀形成的基礎性的、公共的、可復用的框架和組件,這…

Qt 基礎組件速學 鼠標和鍵盤事件

學習目標: 鼠標事件和鍵盤事件應用 前置環境 運行環境:qt creator 4.12 學習內容和效果演示: 1.鼠標事件 根據鼠標的坐標位置,做出對應的事件。 2.鍵盤事件 根據鍵盤的輸入做出對應操作 詳細主要代碼 1.鼠標事件 #include "main…

一文讀懂輕量日志收集系統Loki工作原理

Loki 是由 Grafana Labs 開發的日志聚合系統,設計目標是提供一種高效、低成本的日志收集和查詢解決方案。與傳統的日志系統(如 ELK Stack)不同,Loki 不會對日志內容進行索引,而是僅對日志的元數據進行索引,…

美國大帶寬服務器租用優勢和注意事項

美國大帶寬服務器租用對于需要處理大量數據和提供高速網絡服務的企業至關重要。下面將詳細討論美國大帶寬服務器租用的優勢、適用場景及注意事項,rak部落小編為您整理發布美國大帶寬服務器租用的優勢和注意事項。 優勢 1. 高速數據傳輸: - 大帶寬服務器提…

FTP、http 、tcp

HTTP VS FTP HTTP :HyperText Transfer Protocol 超文本傳輸協議,是基于TCP協議 FTP: File Transfer Protocol 文件傳輸協議, 基于TCP協議, 基于UDP協議的FTP 叫做 TFTP HTTP 協議 通過一個SOCKET連接傳輸依次會話數…

FIND_IN_SET使用案例--[sql語句根據多ids篩選出對應數據]

一 FIND_IN_SET select id,system_ids from intellect_client_info where FIND_IN_SET(5, system_ids) > 0;

Spring Boot 中的監視器是什么?有什么作用?

前言: 監聽器相信熟悉 Spring、Spring Boot 的都知道,但是監視器又是什么?估計很多人一臉懵的狀態,本篇分享一下 Spring Boot 的監視器。 Spring Boot 系列文章傳送門 Spring Boot 啟動流程源碼分析(2) …

Apache DolphinScheduler 與 AWS 的 EMR/Redshift 集成實踐分享

引言 這篇文章將給大家講解關于DolphinScheduler與AWS的EMR和Redshift的集成實踐,通過本文希望大家能更深入地了解AWS智能湖倉架構,以及DolphinScheduler在實際應用中的重要性。 AWS智能湖倉架構 首先,我們來看一下AWS經典的智能湖倉架構圖…