Vite体系知识 | 青训营

53 阅读2分钟

Vite体系知识

1 浅谈构建工具

为什么需要构建工具?

1.1 前端工程的痛点

核心要素——资源

模块化、资源编译、产物质量和开发效率

1.2 前端构建工具的意义

  • 模块化方案 ——> 1.提供模块加载方案;兼容不同的模块规范
  • 语法转义 ——> 1.高级语法转义,如Sass、TypeScript;2.资源加载,如图片、字体、worker
  • 产物质量 ——> 产物压缩、无用代码删除、语法降级
  • 开发效率 ——> 热更新

2 Vite概要介绍

Vite概览

Vite中文网:vitejs.cn/

  • 定位:新一代前端构建工具
  • 两大组成部分:1.No-bundle开发服务,源文件无需打包;2.生产环境基于Rollup的Bundler
  • 核心特性:1.高性能,dev启动速度和热更新速度非常快;2.简单易用,开发者体验好
  • 两大行业趋势

两大行业趋势

  • 全球浏览器对原生ESM的普遍支持
//  foo.js
export const foo = 'foo'
//  index.html
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>test esm</title>
  </head>
  <body>
    <script type="module">
        import {foo} from './foo.js'
        console.log(foo)
    </script>
  </body>
</html>

  • 基于原生语言(Go、Rust)编写前端工具链(Esbuild、SWC)

基于原生ESM的开发服务优势

  • 无需打包项目源代码
  • 天然的按需加载
  • 可以利用文件级的浏览器缓存

………

3 Vite上手实战

# 提前安装
npm i -g pnpm
# 初始化命令
pnpm create vite
# 安装依赖
pnpm install
# 启动项目
npm run dev 

使用HMR

无需额外配置,自动开启

生产环境Tree Shaking

Vite直观印象

  • 响应迅速
  • 开箱即用

4 Vite整体进阶

关键技术:

  • 依赖预打包
  • 单文件编译
  • 代码压缩
  • 插件机制

5 Vite进阶路线

深入双引擎

  • esbuild
  • rollup.js

先了解基本使用,手动尝试各项常用配置;然后学习其插件开发

插件开发

抽离核心逻辑+易于扩展

  • 插件示例
// Vite插件示例
const fileRegex = /\.(my-file-ext)$/

export default function myPlugin(){
  return {
    name: 'transform-file',

    transform(src, id){
      if(fileRegex.test(id)){
        return {
          code: complieFileToJS(src),
          map: null //如果可行将提供source map
        }
      }
    }
  }
}
// 使用插件
// vite.config.js
import plug feom './myPlugin'

export default defineConfig({
  plugins: [plugin()]
})

Vite插件开发文档:cn.vitejs.dev/guide/api-p…