探索现代 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.mzph.cn/web/65129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何通过 6 种方式将照片从 iPhone 传输到戴尔 PC?

“你知道如何将iPhone上的照片转移到电脑上吗&#xff1f;我的iPhone上有很多照片&#xff0c;所以我想将这些照片从iPhone转移到电脑上。请给我一些建议&#xff0c;谢谢&#xff01;” - Nirenling 在戴尔社区中发布 您的iPhone是否被各种精彩的照片和视频占满而存储空间不…

升级 Spring Boot 3 配置讲解 —— 支持断点传输的文件上传和下载功能

学会这款 &#x1f525;全新设计的 Java 脚手架 &#xff0c;从此面试不再怕&#xff01; 在现代 Web 应用中&#xff0c;文件上传和下载是非常常见的需求。然而&#xff0c;当文件较大时&#xff0c;传统的上传下载方式可能会遇到网络不稳定或传输中断的问题。为了解决这些问题…

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

文章目录 目录了解自动配置 一、导入对应场景的Mean依赖&#xff1a;1、引入依赖**找到自动配置类的所有配置都存放在哪里** 二、编写主程序&#xff1a;SpringBootApplication观察源码时所需要知道的几个核心注解&#xff1a;1、观察SpringBootApplication源码都做了什么 三、…

Mongo高可用架构解决方案

Mongo主从复制哪些事(仅适用特定场景) 对数据强一致性要求不高的场景,一般微服务架构中不推荐 master节点可读可写操作,当数据有修改时,会将Oplog(操作日志)同步到所有的slave节点上。那么对于从节点来说仅只读,所有slave节点从master节点同步数据,然而从节点之间互相…

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;他们会占…

网络安全的学习与实践经验(附资料合集)

学习资源 在线学习平台&#xff1a; Hack This Site&#xff1a;提供从初学者到高级难度的挑战任务&#xff0c;适合练习各种网络安全技术。XCTF_OJ&#xff1a;由XCTF组委会开发的免费在线网络安全网站&#xff0c;提供丰富的培训材料和资源。SecurityTube&#xff1a;提供丰…

行业商机信息付费小程序系统开发方案

行业商机信息付费小程序系统&#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 自定义函数入手…

JeeSite 快速开发平台:全能企业级快速开发解决方案|GitCode 光引计划征文展示

投稿人GitCode ID&#xff1a;thinkgem 光引计划投稿项目介绍 JeeSite 快速开发平台&#xff0c;不仅仅是一个后台开发框架&#xff0c;它是一个企业级快速开发解决方案&#xff0c;后端基于经典组合 Spring Boot、Shiro、MyBatis&#xff0c;前端采用 Beetl、Bootstrap、Admi…

2025/1/4期末复习 密码学 按老师指点大纲复习

我们都要坚信&#xff0c;道路越是曲折&#xff0c;前途越是光明。 --------------------------------------------------------------------------------------------------------------------------------- 现代密码学 第五版 杨波 第一章 引言 1.1三大主动攻击 1.中断…

Java 内存溢出(OOM)问题的排查与解决

在 Java 开发中&#xff0c;内存溢出&#xff08;OutOfMemoryError&#xff0c;简称 OOM&#xff09;是一个常见且棘手的问题。相比于数组越界、空指针等业务异常&#xff0c;OOM 问题通常更难定位和解决。本文将通过一次线上内存溢出问题的排查过程&#xff0c;分享从问题表现…

【51单片机零基础-chapter3:按键:独立按键|||附带常见C语句.逻辑运算符】

将unsigned char var0;看作沟通二进制和十进制的桥梁 var是8位,初始为0000 0000; 同时可以进行十进制的运算 逻辑运算 位运算 & 按位与(有0则0) | 按位或(有1则1) ~ 按位非 ^ 按位异或(相同则1,不同为0) <<按位左移 >>按位右移 位运算符解释: 0011 1100 <&…

游戏如何检测iOS越狱

不同于安卓的开源生态&#xff0c;iOS一直秉承着安全性更高的闭源生态&#xff0c;系统中的硬件、软件和服务会经过严格审核和测试&#xff0c;来保障安全性与稳定性。 据FairGurd观察&#xff0c;虽然iOS系统具备一定的安全性&#xff0c;但并非没有漏洞&#xff0c;如市面上…

在Lua中,Metatable元表如何操作?

Lua中的Metatable&#xff08;元表&#xff09;是一个强大的特性&#xff0c;它允许我们改变表&#xff08;table&#xff09;的行为。下面是对Lua中的Metatable元表的详细介绍&#xff0c;包括语法规则和示例。 1.Metatable介绍 Metatable是一个普通的Lua表&#xff0c;它用于…

12306分流抢票软件 bypass v1.16.43 绿色版(春节自动抢票工具)

软件介绍 12306Bypass分流抢票软件&#xff0c;易操作强大的12306抢票软件&#xff0c;全程自动抢票&#xff0c;云识别验证码打码&#xff0c;多线程秒单、稳定捡漏&#xff0c;支持抢候补票、抢到票自动付款&#xff0c;支持多天、多车次、多席别、多乘客、短信提醒等功能。…