Vite初体验

391 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

Vite

Vite在前端圈火了很久,但是一直都在用react配合umi的生态圈去做业务开发,umi饱受诟病的就是编译开发的速度太慢了,每次都要编译很久,后面加了MSFU之后效果有改变

Vite以构建速度快出圈,加上尤大的背书,最近正好有空研究下和webpack构建工具的区别和优势在哪里

中文官方文档地址

初始化项目

使用yarn

yarn create vite

选择react-ts模板初始化项目

image.png

项目结构

image.png

安装依赖

cd vite-project
yarn install

image.png

使用vscode启动脚本

image.png

image.png

可以看到启动速度非常快448ms,以前用create-react-app也要几秒才能启动成功

image.png

修改App.tsx

可以观察到非常快,从控制台肉眼无法感知,以前create-react-app也要几百ms

构建生产产物

执行命令

yarn run build

这块速度也很快,但是没有特别明显,可以看到vite的优势还是在开发过程中热更新的速度

image.png

打包产物

image.png

功能

对非常基础的使用来说,使用 Vite 开发和使用一个静态文件服务器并没有太大区别。然而,Vite 还通过原生 ESM 导入提供了许多主要用于打包场景的增强功能。

NPM 依赖解析和预构建

原生 ES 导入不支持下面这样的裸模块导入:

import { someMethod } from 'my-dep'

上面的代码会在浏览器中抛出一个错误。Vite 将会检测到所有被加载的源文件中的此类裸模块导入,并执行以下操作:

  1. 预构建 它们可以提高页面加载速度,并将 CommonJS / UMD 转换为 ESM 格式。预构建这一步由 esbuild 执行,这使得 Vite 的冷启动时间比任何基于 JavaScript 的打包器都要快得多。
  2. 重写导入为合法的 URL,例如 /node_modules/.vite/deps/my-dep.js?v=f3sf2ebd 以便浏览器能够正确导入它们。