Vite 知识体系 | 青训营笔记

94 阅读2分钟

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

构建工具简介

核心要素:资源

资源的处理

  • 模块化

    • 提供模块加载方案
    • 兼容不同模块规范
  • 资源编译

    • 高级语法转义,如 sass、ts 等
    • 静态资源加载,如图片、字体、worker
  • 产物质量

    • 产物压缩
    • 无用代码删除
    • 语法降级
  • 开发效率

    • 热更新

vite 概述

定位

新一代前端构建工具

组成部分

No-bundle开发服务,源文件无需打包

生产环境基于 Rollup 的 Bundler

核心特征

高性能、dev启动速度和热更新速度非常快

简单易用,开发者体验好

行业趋势

现代浏览器对原生 ESM 的普遍支持

  • script 标签 module 属性<script type="module"></script>
  • 使用 ESM 模块语法
  • 无需打包项目源代码、按需加载、文件级浏览器缓存

基于原生语言(Go、Rust)编写的前端编译工具链,如 Esbuild、swc 等

Esbuild 基于 Go 开发的前端工具

  • 打包器 Bundler
  • 编译器 Transformer
  • 压缩器 Minifier

性能极高,被 vite 应用

Vite 项目实战

项目初始化

npm create vite@latest

npm install

npm run dev

添加其他依赖项

npm install sass -D

其他特性

SASS、SCSS、less、stylus

CSS modules

静态资源

HMR

Tree Shaking

项目开发

生产 npm run dev

构建 npm run build

Vite 整体架构

依赖预打包

避免 node_modules 过多的文件请求

将 commonjs 格式转换为 ESM 格式

单文件编译

使用 Esbuild 编译 TS、JSX

编译速度大幅提升

不支持类型检查

不支持语法降低为ES5

代码压缩

使用 ESbuild 作为默认压缩工具

插件机制

开发阶段 模拟 Rollup 插件机制

生产环境 直接使用 Rollup

Vite 进阶

双引擎

esbuild

rollup.js

插件开发

Vite 钩子 Hook

代码分割

JS 编译工具 babel

语法安全降级

服务器渲染 SSR

底层标准