Vite 是由 Evan You,Vue.js 的创始人,发起开发的。随着前端项目变得越来越复杂,传统构建工具如 Webpack 在构建速度和开发体验上逐渐显现出一些瓶颈。尤其是在开发环境中,构建速度慢、冷启动时间长,热更新不够流畅,影响了开发者的工作效率。
为了解决这些问题,Evan You 创建了 Vite。Vite 在设计时,最大化地利用了现代浏览器对 ES Modules 的支持,直接通过浏览器按需加载 JavaScript 模块,这让 Vite 在开发时能避免传统构建工具中的大量打包步骤,从而大幅提升开发效率。
Vite 针对开发环境和生产环境下的打包构建模式完全不一样,他主要由以下两个部分组成:
Vite 这样做的主要目的是为了在开发环境构建项目时能获得极快的体验。
ES6 Module 也被称作 ES Module (或 ESM ), 是由 ECMAScript 官方提出的模块化规范,作为一个官方提出的规范, ES Module 已经得到了现代浏览器的内置支持。在现代浏览器中,如果在 HTML 中加入含有 type="module"
属性的 script 标签,那么浏览器会
按照 ES Module 规范来进行依赖加载和模块解析,这也是 Vite 在开发阶段实现 no-bundle
的原因,由于模块加载的任务交给了浏览器,即使不打包也可以顺利运行模块代码,具体的模块加载流程我们会在下一节进行详细的解释。
大家可能会担心 ES Module 的兼容性问题,其实 ES Module 的浏览器兼容性如今已经相当好了,覆盖了 90% 以上的浏览器份额。
不仅如此,一直以 CommonJS 作为模块标准的 Node.js 也紧跟 ES Module 的发展步伐,从 12.20 版本开始正式支持原生 ES Module。也就是说,如今 ES Module 能够同时在浏览器与 Node.js 环境中执行,拥有天然的跨平台能力。