打包:使用工具抓取、处理并将我们的源码模块串联成可以在浏览器中运行的文件。
ES-Moudle:用于处理模块的ECMAScript标准
HMT:Hot Module Replacement
304 Not Modified:此次请求为条件请求。在请求头中有两个请求参数:If-Modified-Since 和 If-None-Match。当客户端缓存了目标资源但不确定该缓存资源是否是最新版本的时候,就会发送一个条件请求。
需要处理的JavaSript代码呈指数级增长,包含数千个模块的大型项目也变得普通,我们遇到了性能瓶颈,JavaScript开发的工具通常要很长时间才能启动开发服务器。
Vite旨在利用生态系统中的新进展解决上述问题:浏览器开始原生支持ES模块,而且越来越多的JavaScript工具使用编译语言编写
Vite将应用中的模块区分为依赖和源码两类,改进了开发服务器启动时间:
依赖:大多为开发时不会变动的纯JavaScript。一些较大的依赖(例如有上百个模块的组件库)处理的代价也很高。依赖也通常会存在多种模块化格式(例如 ESM 或者 CommonJS)。
Vite将会使用esbiuld预构建依赖
源码:通常包含一些需要转换的组件(如CSS或Vue/Svelte组件),时常会被编辑。同时,并不是所有的源码都需要同时被加载(例如基于路由拆分的代码模块)。
在Vite中,HMR是在原生ESM上执行的,当编辑一个文件时,Vite 只需要精确地使已编辑的模块与其最近的 HMR 边界之间的链失活(大多时候只是模块本身),使得无论应用大小如何,HMR 始终能保持快速更新。
为什么选Vite:用一句话概括就是Vite的速度很快。1.Vite将应用中的模块区分为依赖和源码,对症下药,使用esbuild预构建依赖and原生ESM提供源码,不是所有的源码都需要同时被加载,也让浏览器接管了一部分打包的工作,以便于只有当前被实际应用的时候才会处理。2.Vite在编辑文件时,还无需重新加载页面,是需要精准地使以编辑的模块与最近边界之间的链失活。3.利用浏览器做事情:利用HTTP头加速页面的重新加载