前端小结之Vite知识体系| 青训营笔记

137 阅读2分钟

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

引言

Vite是一个基于浏览器原生ES-Module的前端构建工具,在开发环境下,利用浏览器去解析import。一起来学习吧!!

1、 什么是Vite?

Vite是一种新型的前端构建工具,它能显著改善前端开发体验。

Vite由两个主要部分组成:

1、dev server:利用浏览器的ESM能力来提供源文件,具有丰富的内置功能并具有高效的HMR

2、生产构建:生产环境利用Rollup来构建代码,提供指令用来优化构建过程

Vite作为一个基于浏览器原生ESM的构建工具,它省略了开发环境的打包过程,利用浏览器去解析imports,在服务端按需编译返回。同时,在开发环境拥有速度快到惊人的模块热更新,且热更新的速度不会随着模块增多而变慢。因此,使用Vite进行开发,至少会比Webpack快10倍左右。

2、 Vite原理

ESM

在ES6没有出现之前,随着js代码日益膨胀,往往会对资源模块化来提效,这也就出现了多个模块化方案。如CommonJS常用于服务端,AMD、CMD规范常用在客户端。ES6出现后,紧接着出现了ESM。ESM是浏览器支持的一种模块化方案,允许在浏览器实现模块化。

由于ESM编译时就能确定模块的依赖关系,因此能够只包含要运行的代码,可以显著减少文件体积,降低浏览器压力。

热更新原理

Vite 的热加载原理,其实就是在客户端与服务端建立了一个 websocket 连接,当代码被修改时,服务端发送消息通知客户端去请求修改模块的代码,完成热更新。

总结

Vite有什么缺点?

目前 Vite 还是使用的 es module 模块不能直接使用生产环境(兼容性问题)。默认情况下,无论是 dev 还是 build 都会直接打出 ESM 版本的代码包,这就要求客户浏览器需要有一个比较新的版本,这放在现在的国情下还是有点难度的。不过 Vite 同时提供了一些弥补的方法,使用 build.polyfillDynamicImport 配置项配合 @vitejs/plugin-legacy 打包出一个看起来兼容性比较好的版本。

  • 生产环境使用 rollup 打包会造成开发环境与生产环境的不一致。

  • 很多 第三方 sdk 没有产出 ems 格式的的代码,这个需要自己去做一些兼容。

今天介绍了一些Vite的相关知识,Vite还有许多内容值得关注。 一起打卡学习吧!!!

烟火向星辰,所愿皆成真!