Vite知识体系| 青训营笔记

82 阅读2分钟

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

Vite知识体系:

一:浅谈构建工具

1.      构建工具的意义:

a)       模块化方案:提供模块加载方案、兼容不同模块规范

b)       语法转译:高级语法转译,如Sass、TypeScript、资源加载,如图片、字体、worker

c)        产物质量:产物压缩、无用代码删除、语法降级

d)       开发效率:热更新

二:Vite概要介绍

1.      定位:新一代前端构建工具

2.      两大组成部分:

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

b)       生产环境基于Rollup的Bundler

3.      核心特征

a)       高性能,dev启动速度和热更新速度非常快!

b)       简单易用,开发者体验好

4.      当下问题:

a)       缓慢的启动->项目编译等待成本高

b)       缓慢的热更新->修改代码后不能实时更新

5.      浏览器原生ESM支持:

a)       script标签增加type= "module"属性

b)       使用ESM模块导入导出语法

三:Vite上手实战

1.      项目初始化:

a)       输入初始化参数

b)       启动完成后,打开浏览器访问对应地址即可

2.      使用Css

a)       安装组件

b)       引入Header组件

3.      生产环境TreeShaking:

a)       基于ESM的import/export语句依赖关系,与运行时状态无关

b)       在构建阶段将未使用到的代码进行删除

四:Vite整体架构

1.      为什么要进行预打包?

a)       避免node_ modules过多的文件请求

b)       将CommonJs格式转换为ESM格式

2.      预打包实现原理:

a)       服务启动前扫描代码中用到的依赖

b)       用Esbuild对依赖代码进行预打包.

c)        改写import语句,指定依赖为预构建产物路径

3.      用Esbuild编译TS/JSX

a)       优势:编译速度提升10-100x

b)       局限性:不支持类型检查、不支持语法降级到ES5

五:Vite进阶路线

1.      插件开发:

a)       抽离核心逻辑

b)       易于拓展

2.      语法安全降级:底层原理

a)       借助Babel进行语法自动降级

b)       提前注入Polyfill实现,如core-js、regenerator-runtime

3.      深入了解底层标准:

a)       重点特性:

b)       CJS规范

c)        ESM规范

d)       HTTP 2.0特性