探索現代 Web 開發中的流行技術:深入學習 Vite 的使用

在前端開發的世界中,構建工具扮演著越來越重要的角色。從 Webpack 到 Parcel,再到 Rollup,每個工具都有自己的獨特定位和目標。而今天,我們要討論的是一款近年來迅速崛起并受到廣泛歡迎的構建工具— Vite

本文將從基本原理到實戰案例,帶你全面了解和掌握 Vite,并探討它為何成為現代 Web 開發中的新寵。


一、Vite 是什么?

Vite(發音為 /vit/,意為 "快速")是由 Vue.js 的作者尤雨溪創建的下一代前端工具。Vite 的核心目標是快速構建開發服務器啟動速度的提升

它的主要特點包括:

  1. 極速冷啟動:基于原生 ES 模塊(ESM),不需要捆綁全部文件。

  2. 即時代碼熱更新(HMR):能夠在開發時提供快速的模塊熱替換。

  3. 優化的構建流程:通過 Rollup 來進行高效的生產環境打包。

  4. 開箱即用:支持 TypeScript、JSX、CSS 等特性,且與現代框架(如 React、Vue)高度兼容。


二、Vite 的核心原理

Vite 的性能提升主要來源于以下兩大特性:

1. 原生 ESM 加速開發

傳統的構建工具在開發模式中會將整個項目捆綁為一個大文件,這會造成啟動時間過長。而 Vite 直接利用瀏覽器對 ESM 的支持,將模塊的加載交給瀏覽器。這樣,只有被訪問的模塊才會被加載。

2. 按需構建

在生產模式下,Vite 使用 Rollup 對代碼進行捆綁,并基于動態分塊優化性能,從而降低最終的資源大小。


三、環境搭建

在開始使用 Vite 之前,請確保你的 Node.js 版本在 16.0.0 或以上。

1. 創建項目

npm create vite@latest my-vite-app

在此過程中,Vite 會提示選擇模板,例如:

  • Vanilla(原生 JavaScript)

  • Vue

  • React

  • Svelte

選擇你喜歡的框架,比如 React。

2. 安裝依賴

cd my-vite-app
npm install

3. 啟動開發服務器

npm run dev

你的開發服務器將在 http://localhost:5173 運行。


四、核心功能示例

1. 使用 HMR 提高開發效率

修改項目中的文件,瀏覽器會立即反映改動。嘗試以下操作:

  • 編輯 src/main.jsx,添加一段新的 HTML 或修改現有內容。

瀏覽器不刷新頁面即可看到實時更新,這就是 Vite 的 HMR 特性。

2. 支持 TypeScript

Vite 開箱支持 TypeScript,無需任何額外配置。直接創建一個 .tsx 文件,并編寫以下代碼:

import React from 'react';const App: React.FC = () => {return <h1>Hello, TypeScript!</h1>;
};export default App;

修改 main.jsx,將此組件導入即可。

3. 使用插件擴展功能

Vite 的插件系統基于 Rollup 插件擴展,生態非常豐富。例如,添加 Tailwind CSS:

安裝依賴
npm install tailwindcss postcss autoprefixer
npx tailwindcss init
配置 Tailwind

tailwind.config.js 中添加如下內容:

module.exports = {content: ['./src/**/*.{js,ts,jsx,tsx}'],theme: {extend: {},},plugins: [],
};

src/index.css 中引入 Tailwind 的基礎樣式:

@tailwind base;
@tailwind components;
@tailwind utilities;

運行 npm run dev,即可開始使用 Tailwind CSS。


五、性能對比與優勢

我們通過以下場景將 Vite 與 Webpack 對比:

特性ViteWebpack
開發服務器啟動速度極快(毫秒級)慢(大型項目數十秒)
熱更新性能高效(模塊熱替換)較慢(全頁面刷新)
默認配置復雜度簡單,開箱即用復雜,需大量手動配置
構建性能高效優化的生產構建依賴優化配置

六、總結

Vite 以其極速的開發體驗和簡單易用的配置脫穎而出,是現代 Web 開發的理想選擇。無論你是開發小型項目還是大型應用,Vite 都能幫助你顯著提升效率。

通過本文的介紹,希望你對 Vite 的使用有了更深入的理解。不妨動手試試,用它為你的下一個項目注入速度與激情!

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

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

相關文章

如何通過 6 種方式將照片從 iPhone 傳輸到戴爾 PC?

“你知道如何將iPhone上的照片轉移到電腦上嗎&#xff1f;我的iPhone上有很多照片&#xff0c;所以我想將這些照片從iPhone轉移到電腦上。請給我一些建議&#xff0c;謝謝&#xff01;” - Nirenling 在戴爾社區中發布 您的iPhone是否被各種精彩的照片和視頻占滿而存儲空間不…

『SQLite』表達式操作

摘要&#xff1a;表達式是一個或多個值、運算符和計算值的 SQL 函數的組合。SQL 表達式與公式類似&#xff0c;都寫在查詢語言中。 基本語法 SELECT column1, column2, columnN FROM table_name WHERE [CONTION | EXPRESSION];布爾表達式 SQLite 的布爾表達式在匹配單個值的…

升級 Spring Boot 3 配置講解 —— 支持斷點傳輸的文件上傳和下載功能

學會這款 &#x1f525;全新設計的 Java 腳手架 &#xff0c;從此面試不再怕&#xff01; 在現代 Web 應用中&#xff0c;文件上傳和下載是非常常見的需求。然而&#xff0c;當文件較大時&#xff0c;傳統的上傳下載方式可能會遇到網絡不穩定或傳輸中斷的問題。為了解決這些問題…

框架Tensorflow2

深度學習框架之Tensorflow2 Tensorflow2版本的介紹 Tensorflow(簡稱tf)是深度學習框架&#xff0c;大大簡化了建模的方法和步驟&#xff0c;把Keras Api當作核心&#xff0c;使用非常簡單&#xff0c;跨平臺&#xff0c;集成各種現成模型&#xff0c;eager mode使得調試起來不…

SpringBoot3-深入理解自動配置類的原理(尚硅谷SpringBoot3-雷神)

文章目錄 目錄了解自動配置 一、導入對應場景的Mean依賴&#xff1a;1、引入依賴**找到自動配置類的所有配置都存放在哪里** 二、編寫主程序&#xff1a;SpringBootApplication觀察源碼時所需要知道的幾個核心注解&#xff1a;1、觀察SpringBootApplication源碼都做了什么 三、…

Mongo高可用架構解決方案

Mongo主從復制哪些事(僅適用特定場景) 對數據強一致性要求不高的場景,一般微服務架構中不推薦 master節點可讀可寫操作,當數據有修改時,會將Oplog(操作日志)同步到所有的slave節點上。那么對于從節點來說僅只讀,所有slave節點從master節點同步數據,然而從節點之間互相…

商業領域 - 競標極簡理解

競標極簡理解 競標是一種投標過程&#xff0c;指參與者&#xff08;通常是企業或個人&#xff09;為了獲得某個項目或合同的執行權&#xff0c;向招標人&#xff08;通常是采購方或項目發起方&#xff09;提交報價和方案&#xff0c;并爭取獲得招標人的認可 競標是一種常見的招…

C#Halcon跨窗口顏色識別

機器視覺是一門讓計算機模擬人類視覺功能的學科。顏色識別在其中扮演著重要的角色&#xff0c;它旨在通過對圖像中的顏色信息進行分析&#xff0c;從而識別出圖像中的目標物體或者區域。例如&#xff0c;在水果分揀系統中&#xff0c;可以根據水果的顏色&#xff08;如蘋果的紅…

01:C語言的本質

C語言的本質 1、ARM架構與匯編2、局部變量初始化與空間分配2.1、局部變量的初始化2.1、局部變量數組初始化 3、全局變量/靜態變量初始化化與空間分配4、堆空間 1、ARM架構與匯編 ARM簡要架構如下&#xff1a;CPU&#xff0c;ARM(能讀能寫)&#xff0c;Flash&#xff08;能讀&a…

Transformer知識梳理

Transformer知識梳理 文章目錄 Transformer知識梳理什么是Transformer&#xff1f;語言模型遷移學習 Transformer結構注意力層原始結構 總結 什么是Transformer&#xff1f; 語言模型 Transformer模型本質上都是預訓練語言模型&#xff0c;大部分采用自監督學習&#xff08;S…

第29天:PHP應用弱類型脆弱Hash加密Bool類型Array數組函數轉換比較

#知識點&#xff1a; 1、安全開發-原生PHP-弱類型脆弱 2、安全開發-原生PHP-函數&數據類型 3、安全開發-原生PHP-代碼審計案例 1、 和 兩個等號是弱比較&#xff0c;使用進行對比的時候&#xff0c;php解析器就會做隱式類型轉換&#xff0c;如果兩個值的類型不相等就會把兩…

STM32F1學習——編碼器接口

一、編碼器接口 編碼器接口可以接收正交編碼器的信號&#xff0c;根據編碼器旋轉產生的正交信號脈沖&#xff0c;通過硬件自動控制CNT值的自增或自減&#xff0c;從而指出編碼器的位置、旋轉方向和旋轉速度。 每個高級定時器和通用定時器都有一個編碼器接口&#xff0c;他們會占…

如何刪除 Docker 中的懸虛鏡像?

在 Docker 中&#xff0c;懸虛鏡像&#xff08;Dangling Images&#xff09;是指那些沒有 標簽 且沒有被任何容器使用的鏡像。這些鏡像通常是由于構建過程中生成的中間層鏡像或未正確清理的鏡像殘留。刪除懸虛鏡像可以釋放磁盤空間并保持 Docker 環境的整潔。 1. 列出懸虛鏡像…

網絡安全的學習與實踐經驗(附資料合集)

學習資源 在線學習平臺&#xff1a; Hack This Site&#xff1a;提供從初學者到高級難度的挑戰任務&#xff0c;適合練習各種網絡安全技術。XCTF_OJ&#xff1a;由XCTF組委會開發的免費在線網絡安全網站&#xff0c;提供豐富的培訓材料和資源。SecurityTube&#xff1a;提供豐…

ts是什么、tsc是什么、tsx是什么、jsx是什么、scss是什么

一、TS (TypeScript): TypeScript 是一種由微軟開發的開源編程語言&#xff0c;它是 JavaScript 的一個超集&#xff0c;增加了類型系統和對ES6及以后版本新特性的支持。TypeScript 旨在解決 JavaScript 開發中的可維護性、可擴展性和大型項目中的復雜性問題。它允許開發者在編…

行業商機信息付費小程序系統開發方案

行業商機信息付費小程序系統&#xff0c;主要是整合優質行業資源&#xff0c;實時更新的商機信息。在當今信息爆炸的時代&#xff0c;精準、高效地獲取行業商機信息對于企業和個人創業者而言至關重要。 一、使用場景 日常瀏覽&#xff1a;用戶在工作間隙或閑暇時間&#xff0c…

[Qt] 輸入控件 | Line | Text | Combo | Spin | Date | Dial | Slider

目錄 輸入類控件 1、Line Edit 錄入個人信息 使用正則表達式驗證輸入框的數據 驗證兩次輸入的密碼一致 切換顯示密碼 2、Text Edit 獲取多行輸入框的內容 驗證輸入框的各種信號 3、Combo Box 使用下拉框模擬麥當勞點餐 從文件中加載下拉框的選項 4、Spin Box 調整…

Flink CDC 自定義函數處理 SQLServer XML類型數據 映射 doris json字段方案

Flink CDC 自定義函數處理 SQLServer XML類型數據方案 1. 背景 因業務使用SQLServer數據庫&#xff0c;CDC同步到doris 數倉。對于SQLServer xml類型&#xff0c;doris沒有相應的字段對應&#xff0c; 可以使用json來存儲xml數據。需要進行一步轉換。從 flink 自定義函數入手…

C語言:cJSON將struct結構體與JSON互相轉換

文章目錄 struct 轉 jsonjson 轉 struct 文檔&#xff1a; https://github.com/DaveGamble/cJSON 項目結構 . ├── libs │ ├── cJSON.c │ └── cJSON.h └── main.c示例 struct 轉 json #include "libs/cJSON.h" #include <stdio.h>// defi…

JeeSite 快速開發平臺:全能企業級快速開發解決方案|GitCode 光引計劃征文展示

投稿人GitCode ID&#xff1a;thinkgem 光引計劃投稿項目介紹 JeeSite 快速開發平臺&#xff0c;不僅僅是一個后臺開發框架&#xff0c;它是一個企業級快速開發解決方案&#xff0c;后端基于經典組合 Spring Boot、Shiro、MyBatis&#xff0c;前端采用 Beetl、Bootstrap、Admi…