探索现代 Web 开发中的流行技术:深入学习 Vite 的使用

news2025/1/7 18:44:51

在前端开发的世界中,构建工具扮演着越来越重要的角色。从 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.coloradmin.cn/o/2272135.html

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

相关文章

LeetCode:98.验证二叉搜索树

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;98.验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 …

Golang:使用minio替代文件系统实战教程

本文讨论项目开发中直接文件系统的限制或不足&#xff0c;接着介绍Minio对象存储的优势。同时给出Golang的实际示例代码&#xff0c;包括初始化客户端、读取minio对象以及设置过期策略等。 文件系统 vs Minio 在开发的早期阶段&#xff0c;常见的做法是使用文件系统来存储和检…

拥抱时代--AI(3)

python语言为了研究机器学习专门发展起来一套框架&#xff0c;并且这个框架是开源的&#xff0c;它就是scikit-learn。它主要实现数据预处理&#xff0c;分类&#xff0c;回归&#xff0c;降维&#xff0c;模型选择等最常用的机器学习算法。 在使用scikit-learn之前&#xff0…

实现多账户cursor限制的免费使用

目录 前言 个人建议&#xff1a; 准备工作 下载&#xff1a; 打开cursor&#xff1a; 打开下载文件目录&#xff1a…

OpenCV计算机视觉 05 图像边缘检测(Sobel算子、Scharr算子、Laplacian算子、Canny边缘检测)

图像边缘检测 边缘检测是图形图像处理、计算机视觉和机器视觉中的一个基本工具&#xff0c;通常用于特征提取和特征检测&#xff0c;旨在检测一张数字图像中有明显变化的边缘或者不连续的区域。 yuancv2.imread(yuan.png) cv2.imshow(yuan,yuan) cv2.waitKey(0) yuan_xcv2.Sob…

2025年1月4日蜻蜓q旗舰版st完整开源·包含前后端所有源文件·开源可商用可二开·优雅草科技·优雅草kir|优雅草星星|优雅草银满|优雅草undefined

2025年1月4日蜻蜓q旗舰版st完整开源包含前后端所有源文件开源可商用可二开优雅草科技优雅草kir|优雅草星星|优雅草银满|优雅草undefined 产品介绍&#xff1a; 本产品主要贡献者优雅草科技优雅草kir|优雅草星星|优雅草银满|优雅草undefined-青史留名&#xff0c;时光如川浪淘…

n8n - AI自动化工作流

文章目录 一、关于 n8n关键能力n8n 是什么意思 二、快速上手 一、关于 n8n n8n是一个具有原生AI功能的工作流自动化平台&#xff0c;它为技术团队提供了代码的灵活性和无代码的速度。凭借400多种集成、原生人工智能功能和公平代码许可证&#xff0c;n8n可让您构建强大的自动化…

cursor 使用技巧

一、创建项目前期步骤 1.先给AI设定一个对应项目经理角色&#xff0c; 2.然后跟AI沟通项目功能&#xff0c;生成功能设计文件&#xff1a;README.md README.md项目功能 3.再让AI总结写出开发项目规则文件&#xff1a; .cursorrules 是技术栈进行限定&#xff0c;比如使用什…

xinput1_3.dll丢失修复方法。方法1-方法6

总结 xinput1_3.dll的核心作用 xinput1_3.dll作为Microsoft DirectX库的关键组件&#xff0c;对于游戏控制器的支持起着至关重要的作用。它不仅提供了设备兼容性、多控制器管理和反馈机制等核心功能&#xff0c;还通过XInput API简化了开发人员对控制器状态的检索和设备特性的…

【C++】P2550 [AHOI2001] 彩票摇奖

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述输入格式&#xff1a;输出格式&#xff1a;输入输出样例&#xff1a; &#x1f4af;题解思路1. 问题解析 &#x1f4af;我的实现实现逻辑问题分析 &#x1f4af;老…

01:C语言的本质

C语言的本质 1、ARM架构与汇编2、局部变量初始化与空间分配2.1、局部变量的初始化2.1、局部变量数组初始化 3、全局变量/静态变量初始化化与空间分配4、堆空间 1、ARM架构与汇编 ARM简要架构如下&#xff1a;CPU&#xff0c;ARM(能读能写)&#xff0c;Flash&#xff08;能读&a…

8086汇编(16位汇编)学习笔记10.寄存器总结

8086汇编(16位汇编)学习笔记10.寄存器总结-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 寄存器 8086CPU有14个寄存器 它们的名称为&#xff1a; AX、BX、CX、DX、SI、DI、SP、BP、 IP**、CS、DS、ES、**SS、PSW。 8086CPU所有的寄存器都是16位的&#…

如何在 Ubuntu 22.04 上安装 Cassandra NoSQL 数据库教程

简介 本教程将向你介绍如何在 Ubuntu 22.04 上安装 Cassandra NoSQL 数据库。 Apache Cassandra 是一个分布式的 NoSQL 数据库&#xff0c;旨在处理跨多个普通服务器的大量数据&#xff0c;并提供高可用性&#xff0c;没有单点故障。Apache Cassandra 是一个高度可扩展的分布…

uni-app:实现普通选择器,时间选择器,日期选择器,多列选择器

效果 选择前效果 1、时间选择器 2、日期选择器 3、普通选择器 4、多列选择器 选择后效果 代码 <template><!-- 时间选择器 --><view class"line"><view classitem1><view classleft>时间</view><view class"right&quo…

centos,789使用mamba快速安装R及语言包devtools

如何进入R语言运行环境请参考&#xff1a;Centos7_miniconda_devtools安装_R语言入门之R包的安装_r语言devtools包怎么安装-CSDN博客 在R里面使用安装devtools经常遇到依赖问题&#xff0c;排除过程过于费时&#xff0c;使用conda安装包等待时间长等。下面演示centos,789都是一…

STM32第十一课:STM32-基于标准库的42步进电机的简单IO控制(附电机教程,看到即赚到)

一&#xff1a;步进电机简介 步进电机又称为脉冲电机&#xff0c;简而言之&#xff0c;就是一步一步前进的电机。基于最基本的电磁铁原理,它是一种可以自由回转的电磁铁,其动作原理是依靠气隙磁导的变化来产生电磁转矩&#xff0c;步进电机的角位移量与输入的脉冲个数严格成正…

kafka使用以及基于zookeeper集群搭建集群环境

一、环境介绍 zookeeper下载地址&#xff1a;https://zookeeper.apache.org/releases.html kafka下载地址&#xff1a;https://kafka.apache.org/downloads 192.168.142.129 apache-zookeeper-3.8.4-bin.tar.gz kafka_2.13-3.6.0.tgz 192.168.142.130 apache-zookee…

JSON结构快捷转XML结构API集成指南

JSON结构快捷转XML结构API集成指南 引言 在当今的软件开发世界中&#xff0c;数据交换格式的选择对于系统的互操作性和效率至关重要。JSON&#xff08;JavaScript Object Notation&#xff09;和XML&#xff08;eXtensible Markup Language&#xff09;是两种广泛使用的数据表…

Android14 CTS-R6和GTS-12-R2不能同时测试的解决方法

背景 Android14 CTS r6和GTS 12-r1之后&#xff0c;tf-console默认会带起OLC Server&#xff0c;看起来olc server可能是想适配ATS(android-test-station)&#xff0c;一种网页版可视化、可配置的跑XTS的方式。这种网页版ATS对测试人员是比较友好的&#xff0c;网页上简单配置下…

BurpSuite工具安装

BurpSuite介绍&#xff1a; BurpSuite是由PortSwigger开发的一款集成化的Web应用安全检测工具&#xff0c;广泛应用于Web应用的漏洞扫描和攻击模拟&#xff0c;主要用于抓包该包(消息拦截与构造) 一、Burp suite安装 windows系统需要提前配置好java环境&#xff0c;前面博客…