Vite 知识体系 | 青训营笔记

97 阅读2分钟

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

前言

本课程主要分为五个方面:

  1. 构建工具的意义
  2. Vite 概览介绍
  3. Vite 上手实战
  4. Vite 整体架构
  5. Vite 进阶路线

安装 Node.js

可以选择以下一种方式:

  • 从 Node.js 官网安装 nodejs.org/en/
  • Mac, Linux 环境可以使用 nvm 进行安装 github.com/nvm-sh/nvm NVM_NODEJS_ORG_MIRROR=npmmirror.com/mirrors/nod… nvm install 16

安装 pnpm 执行如下命令即可: npm i -g pnpm

前端构建工具的意义

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

Vite是什么?

vite是下一代前端开发与构建工具。Vite意在提供开箱即用的配置,同时它的插件API和JavaScript API 带来了高度的可扩展性,并有完整的类型支持。

组成

一个开发服务器,它基于原生ES模块 提供了丰富的内建功能,速度快模块热更新(HMR)。

一套构建指令,它使用Rollup打包代码,并且它是预配置的,可输出用于生产环境的高度优化过的静态资源。

核心特征

  1. 高性能:dev启动速度和热更新速度非常快
  2. 简单易用,开发者体验好

如何使用Vite

浏览器支持

开发环境中:Vite需要在支持原生 ES 模块动态导入的浏览器中使用。生产环境中:默认支持的浏览器需要支持 通过脚本标签来引入原生 ES 模块 。可以通过官方插件 @vitejs/plugin-legacy 支持旧浏览器。

vite的常用使用指令

  1. 创建 vite 的项目
  2. 梳理项目的结构
  3. vite项目的运行流程:在工程化的项目中,vue 要做的事情很单纯:通过main.js 把 App.vue 渲染到 index.html 的指定区域中。
  • App.vue 用来编写待渲染的模板结构
  • index.html 中需要预留一个el 区域
  • main.js 把 App.vue 渲染到了 index.html 所预留的区域中(按照vue 3.x 的标准用法,把App.vue 中的模板内容渲染到 index.html 页面的el 区域中)

Vite整体架构

关键技术:依赖预打包

为什么要进行预打包?

  1. 避免node_modules过多的文件请求
  2. 将CommonJS格式转换为ESM格式

实现原理

  1. 服务启动前扫描代码中用到的依赖
  2. 用Esbuild对依赖代码进行预打包
  3. 改写import语句,指定依赖为预构建产物路径

关键技术:单文件编译

用Esbuild编译TS/JSX

  • 优势:编译速度提升 10-100x
  • 局限性:不支持类型检查,不支持语法降级到ES5