Skip to content

认识 vite

什么是 vite ?

vite 是由 尤雨溪 开发的一款前端构建工具,最初是为 Vue 定制的,后来已经支持多种框架(如:React、Svelte)和通用的 JavaScript 项目。

Vite 的核心目标就是 极快的开发体验高效的构建性能,解决传统工具(如:Webpack)在大项目中的性能瓶颈。

vite 为什么比 webpack 快?

在开发环境中:

  • webpack:

    • 开发服务器启动时,webpack 会将所有的文件都构建一遍,从入口文件去索引整个项目,编译成一个或者多个单独的 js 文件,不管模块是否被执行,都要编译/打包到这个 bundle 中。而随着项目越来越复杂,模块越来越多,bundle 越来越大,打包的速度自然就越来越慢了,
    • 在热更新方面,当改动某个模块后,webpack 会将所有模块都重新编译一遍。
  • vite:

    • 开发服务器启动时,不会进行打包/编译,而当浏览器请求某个模块时,根据需要对模块内容进行编译。其原理就是由于现在浏览器支持了 ESM,会自动向依赖的模块发送请求,这种“按需动态编译”极大地缩短了编译时间。
    • 在热更新模块时,当改动某个模块后,仅需让浏览器重新请求该模块即可。
    • 在底层实现上,开发环境借助了 esbuild,而 esbuild 是使用 go 语言编写的,速度极快。

在生产环境中:

  • webpack:

    • webpack 在打包时,需要额外的兼容性工作,消耗了更多的时间。
  • vite:

    • 在底层实现上,生产环境下借助了 rollup。rollup 擅长于处理 ESM 格式的模块。
    • 由于 rollup 专注于 ESM 模块,它的 tree shaking 更加高效。

vite 之所以快能够秒启动,根本原因是?

开发模式下,vite 没有预先打包过程,直接启动的服务器。而后续是 按需编译/动态编译,根据访问地址,再去打包/编译需要的东西。

基于 MIT 许可发布