vite是什么

Vite是一个由尤雨溪开发的基于浏览器原生ESM的构建工具,它提供了即时启动、闪电般的HMR更新和丰富的功能。相比于Webpack,Vite在开发环境中启动更快,HMR更新更高效,特别适合前端新手使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vite 是什么

vite —— 一个由 vue 作者尤雨溪开发的 web 开发工具

Vite由两个主要部分组成

  1. dev server:利用浏览器的ESM能力来提供源文件,具有丰富的内置功能并具有高效的HMR
  2. 生产构建:生产环境利用Rollup来构建代码,提供指令用来优化构建过程

Vite作为一个基于浏览器原生ESM的构建工具,它省略了开发环境的打包过程,利用浏览器去解析imports,在服务端按需编译返回。同时,在开发环境拥有速度快到惊人的模块热更新,且热更新的速度不会随着模块增多而变慢。因此,使用Vite进行开发,至少会比Webpack快10倍左右。

Vite的主要特性

  • Instant Server Start —— 即时服务启动
  • Lightning Fast HMR —— 闪电般快速的热更新
  • Rich Features —— 丰富的功能
  • Optimized Build —— 经过优化的构建
  • Universal Plugin Interface —— 通用的Plugin接口
  • Fully Typed APIs —— 类型齐全的API

为什么要使用Vite

开发环境⚡️速度的提升

经过1.3节,我们简单对比了各打包工具之间的差异。可以看到使用JS开发的工具通常需要很长的时间才能启动开发服务器,且这个启动时间与代码量、代码复杂度正相关。即使使用HMR,文件修改后的效果也要几秒钟才能在浏览器中反应出来,代表如Webpack。那么Vite是如何解决如Webpack这样的构建工具一样,在复杂、多模块项目开发中启动慢、HMR慢的问题呢?

我们详细对比了开发环境中的Vite和Webpack,发现主要有如下不同:

WebpackVite
先打包生成bundle,再启动开发服务器先启动开发服务器,利用新一代浏览器的ESM能力,无需打包,直接请求所需模块并实时编译
HMR时需要把改动模块及相关依赖全部编译HMR时只需让浏览器重新请求该模块,同时利用浏览器的缓存(源码模块协商缓存,依赖模块强缓存)来优化请求
内存高效利用-

因此,针对开发环境中的启动慢问题,Vite开发环境冷启动无需打包,无需分析模块之间的依赖,同时也无需在启动开发服务器前进行编译,启动时还会使用esbuild来进行预构建。而Webpack 启动后会做一堆事情,经历一条很长的编译打包链条,从入口开始需要逐步经历语法解析、依赖收集、代码转译、打包合并、代码优化,最终将高版本的、离散的源码编译打包成低版本、高兼容性的产物代码,这可满满都是 CPU、IO 操作啊,在 Node 运行时下性能必然是有问题。

针对HMR慢,即使只有很小的改动,Webpack依然需要构建完整的模块依赖图,并根据依赖图来进行转换。而Vite利用了ESM和浏览器缓存技术,更新速度与项目复杂度无关。可以看到,如Snowpack、Vite这类面相非打包的构建工具,在开发环境启动时只需要启动两个Server,一个用于页面加载,一个用于HMR的Websocket。当浏览器发出原生的ESM请求,Server收到请求只需要编译当前文件后返回给浏览器,不需要管理依赖。

 

使用简单,开箱即用

相比Webpack需要对entry、loader、plugin等进行诸多配置,Vite的使用可谓是相当简单了。只需执行初始化命令,就可以得到一个预设好的开发环境,开箱即获得一堆功能,包括:CSS预处理、html预处理、异步加载、分包、压缩、HMR等。他使用复杂度介于Parcel和Webpack的中间,只是暴露了极少数的配置项和plugin接口,既不会像Parcel一样配置不灵活,又不会像Webpack一样需要了解庞大的loader、plugin生态,灵活适中、复杂度适中。适合前端新手。

### Webpack 和 Vite 的介绍 #### Webpack 定义 Webpack 是一种模块捆绑工具,主要用于 JavaScript 应用程序。它能够将各种资源视为模块,并通过依赖图的方式将其打包在一起[^1]。 #### Vite 定义 Vite 是新一代前端构建工具,由 Vue.js 核心团队维护。其设计目标是在开发过程中提供更快的速度和更好的开发者体验。Vite 利用了现代浏览器原生 ES 模块的支持,在启动时不需编译整个应用程序即可运行。 ### Webpack 和 Vite 的主要区别 #### 配置复杂度 - **Webpack**: 提供了大量的自定义选项,这虽然赋予了极大的灵活性,但也增加了配置上的难度和学习曲线。 - **Vite**: 以极简主义为核心理念,提供了非常简单的默认设置,几乎不需要额外配置就能满足大多数场景的需求。 #### 插件生态系统 - **Webpack**: 凭借着长时间的发展积累了一个庞大且成熟的插件库,可以处理几乎所有类型的文件转换任务。 - **Vite**: 尽管相对较年轻,但由于得到了Vue社区的强大背书和技术支持,正迅速建立起自己的生态圈。 #### 开发效率 - **Webpack**: 对于大规模应用来说是一个可靠的选择,特别是在需要高度定制化的情况下表现出色。 - **Vite**: 基于ESM特性实现了热更新(HMR),能够在毫秒级时间内完成页面刷新,极大地提高了开发速度[^4]。 #### 启动性能 - **Webpack**: 在初次启动时会花费一定的时间来解析和优化代码包。 - **Vite**: 受益于按需编译机制,首次加载速度显著优于传统打包方案,能立即响应更改并显示结果。 ```javascript // 示例:使用 Vite 创建一个基本的 HTML 文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Vite App</title> </head> <body> <div id="app"></div> <script type="module" src="/src/main.js"></script> </body> </html> // 使用 Webpack 构建的应用入口文件 (main.js) import './style.css'; console.log('This is a webpack project.'); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涵冰...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值