Vite | 青训营笔记

47 阅读2分钟

这是我参与第五届青训营伴学笔记创作活动的第2天。

Vite

Vite是下一代前端开发与构建工具,提供开箱即用的配置。与传统前端构建工具相比,Vite的启动速度和更新速度非常快,同时它的插件API和JS API拥有高度可扩展性,并由完整的类型支持。

Vite两大组成:

  • No-bundle 开发服务,相当于一个node.js的devserver,开发阶段的源文件不需要打包,这是与传统构建工具最大的不同
  • 生产环境基于Rollup的Bundler进行定制和优化,将所有业务代码进行打包

核心特征

  • 高性能,dev启动速度和更新速度很快
  • 简单易用

传统构建工具的问题

  • 启动慢
  • 热更新缓慢

这些问题瓶颈来源于:

  • bundle带来的性能开销
  • JavaScript语言的性能瓶颈

基于传统工具的问题背景下,出现两种趋势:

  • 全球浏览器对原生ESM普遍支持(占比约92%)
  • 基于原生语言(Go、Rust)编写前端编译工具链
    • Esbuild:基于Go编写
    • SWC:基于Rust编写,对标Babel

Vite Dev Server

script标签新增了type=”module”属性,从而可以在script标签里编写ESM语句。当浏览器遇到这种script标签,就会发送请求给Vite Dev Server,然后由Vite Dev Server编译文件内容,并且交给服务器。

基于原生ESM开发有以下优势

  • 无需打包项目源代码,一个文件就是一个请求
  • 按需加载,只有被用到的文件才会发送请求
  • 利用文件级别的浏览器缓存,当文件被修改,只是该文件的缓存失效,无需请求整个项目的文件。

Vite架构

开发环境由Esbuild预打包和模拟Rollup的插件机制构成,生产环境由Esbuild进行代码压缩,直接使用Rollup来处理插件。

Vite的插件既可用于生产环境和开发环境中。

总结

随着Vite快速发展,现在越来越多开发者使用Vite,在2023年,掌握Vite构建项目于开发变得重要。