Vite相关原理

95 阅读2分钟

什么是vite

Vite是一种新型的前端构建工具,能够显著提升前端的开发体验,主要有两部分组成

vite的优点

快速的开发体验

Vite 的构建速度非常快,由于采用了浏览器原生的模块化系统,因此可以避免传统构建工具的静态打包和编译,从而提高了开发效率和构建速度。同时,Vite 还支持 Hot Module Replacement(HMR)和快速刷新等功能,可以实时更新代码和预览修改效果,让开发者专注于开发过程中的实际需求。

简单易用的配置

Vite 的配置非常简单易用,通常只需要一个配置文件即可完成项目的构建和部署。Vite 的配置文件是一个 JavaScript 模块,允许开发者自定义构建和部署的方式,同时也提供了一些默认配置选项,如端口号、代理、压缩等。

支持多种前端框架和语言

Vite 不仅支持常见的前端框架如 Vue、React 和 Angular 等,还支持多种前端语言,如 TypeScript、CoffeeScript 和 Sass 等。这使得开发者可以更加灵活地选择自己熟悉的技术栈,并且能够快速地集成各种框架和语言,提高了开发效率和代码质量

vite的实现原理(以vue为例)

vite利用浏览器原生支持esModule的特性,利用import和export导入导出模块,同时实现了按需加载

  1. 浏览器在import模块时会发起一个http请求,vite通过koa创建一个http服务,拦截.js和vue文件,转换引入包(非/,./,../开头的)的文件路径,如下转换成以'/@module'开头的模块,然后在通过/@module/XXX与node_module里的真实文件位置,建立一个映射的方式,找到文件
// 转换前
import {createApp} from 'vue'
// 转换后
import {createApp} from '/@module/vue'
  1. 处理.vue文件

image.png

如上图,将.vue文件里export的script内容,挂在__script下,template的内容封装成一个.vue?type=template的文件路径,通过import引入,并挂在__script.render下,然后通过对应的方法处理虚拟dom或是其他实现了转换 3. 处理proce.env.NODE_ENV为undefined的问题 http服务器拦截html文件,添加一个script,里边添加proce.env.NODE_ENV的设置,然后返回

image.png