[ Vite 知识体系 中 | 青训营笔记]

66 阅读2分钟

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

Vite 基本概要

Vite是什么?Why Vite?

概览
  • 开发阶段的No-bundle服务,简单来说NodeJS的Dev Server,在这个Server当中,项目的源文件是不需要打包的,这是和传统构建工具最大的不同
业界案例
当下构建工具的问题
  • 打包带来的性能开销,也就是在开发阶段,都会对代码进行一个打包
  • JS是一个解释性的语言是一个单线程的语言,没有办法像Go, Rust那样,利用多线程的优势,来进行性能优化,也就没有那么多的性能优化手段了
两大行业趋势
浏览器对ESM的原生支持
  • 基于浏览器的这个功能,浏览器开发了一套Dev Server,这个Dev Server的底层原理就是<script type='module'></script>, 如下图,浏览器发起一个ts的文件请求,然后Vite Dev Server就会接受这个请求,接受这个请求之后就可以自定义地进行一些文件的编译,内容的响应,浏览器最后拿到的是能够识别的一些JS的内容 (Vite本质上来讲就是个Dev Server, 对浏览器的请求进行承接,进行编译,然后将浏览器能够识别的语法响应给浏览器)

  • 可以利用文件级的浏览器缓存 => 当我一个文件发生变更时,就不会导致整个bundle失效了,只会导致当前请求的这个缓存失效,就可以达到更细腻的浏览器湖南村

基于Esbuild的编译性能优化
  • Bundler方面对标的是Webpack
  • Transformer方面对标的是Babel
  • Minifier方面对标的是Uglify.js
  • 在这三个方面Esbuild都达到了一个较好的水准,编译器方面性能极其出色,被Vite深度使用
Vite内置的Web构建能力
  • 在不做任何配置的情况下,拥有的功能是等价于图中的Webpack基础设施的

  • Vite对常见Web开发需求进行了一个封装,并且内置了一些默认的最佳实践