Vite学习(1)

简介: 最近前端团队升级了技术栈,开始使用vue3来开发新的需求。所以vue3的全家桶都要安排上了。今天先来学习一下全新的构建工具vite。

Vite简介(官网

Vite是一种新型的前端构建工具,它能显著改善前端开发体验。它主要由两部分组成:

  • 一个开发服务器,它基于 原生 ES 模块 提供了 丰富的内建功能,如速度快到惊人的 模块热更新(HMR)。
  • 一套构建指令,它使用 Rollup 打包你的代码,并且它是预配置的,可输出用于生产环境的高度优化过的静态资源。

Vite 意在提供开箱即用的配置,同时它的 插件 API 和 JavaScript API 带来了高度的可扩展性,并有完整的类型支持。

Vite的主要特性

  • 极速的服务启动:使用原生 ESM 文件,无需打包!
  • 轻量快速的热重载:无论应用程序大小如何,都始终极快的模块热重载(HMR)
  • 丰富的功能:对TypeScript、JSX、CSS 等支持开箱即用。
  • 优化的构建:可选 “多页应用” 或 “库” 模式的预配置 Rollup 构建
  • 通用的插件:在开发和构建之间共享 Rollup-superset 插件接口。
  • 完全类型化的API:灵活的 API 和完整 TypeScript 类型。

Vite原理

  • 随着前端的发展,ES6出现后,紧接着出现了ESM。ESM是浏览器支持的一种模块化方案,允许在浏览器实现模块化。ESM的对外接口只是一种静态定义,为编译时加载,遇到模块加载命令import,就会生成一个只读引用。等脚本真正执行时,再根据这个只读引用,到被加载的那个模块内取值。由于ESM编译时就能确定模块的依赖关系,因此能够只包含要运行的代码,可以显著减少文件体积,降低浏览器压力。虽然EMS是一个比较新的模块化方案,但是新一代的浏览器中绝大部分都已经提供了支持。另外Vite 对 js/ts 的处理没有使用如 glup, rollup 等传统打包工具,而是使用了 esbuild。esbuild 是一个全新的js打包工具,底层使用了go,大量使用了并行操作,可以充分利用CPU资源。esbuild支持如babel, 压缩等的功能。并且esbuild的打包性能出众,官方给出的数据是:esbuild比rollup等工具快十几倍。
  • Vite 的基本实现原理,就是启动一个 koa 服务器拦截由浏览器请求 ESM的请求。通过请求的路径找到目录下对应的文件做一定的处理最终以 ESM的格式返回给客户端。

image.png
并且vite在打包的时候开始就将应用中的模块区分为 依赖 和 源码 两类,改进了开发服务器启动时间。依赖 大多为在开发时不会变动的纯 JavaScript。一些较大的依赖(例如有上百个模块的组件库)处理的代价也很高。Vite 将有许多内部模块的 ESM 依赖关系转换为单个模块,以提高后续页面加载性能。Vite使用esbuild在初次启动开发服务器前把检测到的依赖进行预构建。Vite 基于ESM,在使用某些模块时,由于模块依赖了另一些模块,依赖的模块又基于另一些模块。会出现页面初始化时一次发送数百个模块请求的情况。

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

Vite的缺点

— 目前 Vite 还是使用的 es module 模块不能直接使用生产环境(兼容性问题)
— 生产环境使用 rollup 打包会造成开发环境与生产环境的不一致。
— 很多 第三方 sdk 没有产出 ems 格式的的代码,这个需要自己去做一些兼容

参考

Vite原理浅析
Vite介绍及实现原理

相关文章
|
7月前
|
缓存 前端开发 JavaScript
Vite详解
Vite详解
116 3
|
前端开发 JavaScript 开发者
Vite前端构建工具详解
Vite 是一款新兴的前端构建工具,它的出现带来了前端开发体验的革命性变化。本文将介绍 Vite 的基本概念和核心特性,并通过代码实例来演示其强大功能。
190 0
|
2月前
|
存储 资源调度 JavaScript
Vite是什么?怎样使用Vite创建Vue3项目?
Vite是什么?怎样使用Vite创建Vue3项目?
125 0
|
4月前
|
JSON 前端开发 JavaScript
使用vite搭建一个React项目!真香!
【8月更文挑战第13天】使用vite搭建一个React项目!真香!
610 3
使用vite搭建一个React项目!真香!
|
4月前
|
JavaScript 前端开发
什么是前端构建工具?vite和vite脚手架的关系!
【8月更文挑战第1天】前端构建工具简析
89 4
|
7月前
|
JavaScript
Vite使用dayjs
Vite使用dayjs
123 0
|
JavaScript 前端开发
Vite学习(2)
最近前端团队升级了技术栈,开始使用vue3来开发新的需求。所以vue3的全家桶都要安排上了。今天先来学习一下全新的构建工具vite。
Vite学习(2)
|
缓存 前端开发 JavaScript
Vite的原理
Vite的原理
93 0
|
资源调度 JavaScript
vite 教程
首先先介绍一下vite,vite这个名字起源于法语就是很快的意思。应为他是冷服务不打包 用es6 import 来引入对应 的js。其次就是使用rollup 去打包。开发中有热更新等。
366 0
vite 教程