美文网首页
Vite 怎么使用Esbuild 来提升性能

Vite 怎么使用Esbuild 来提升性能

作者: skoll | 来源:发表于2023-06-03 19:21 被阅读0次

简介

1 .Esbuild 是一款基于Go语言开发的js打包工具,最大的特点就是速度快


image.png

2 .Vite 借助esbuild 能快速完成项目打包,文件转换的能力来进行预构建,内容转换

2 .快的原因

1 .go 语言开发,多线程打包,代码直接编译成机器码,webpack 被人诟病构建速度慢,主要是在打包过程中,存在大量的resolve,load,transform,parse,这些操作都是通过js代码来执行的。js不是高效的语言,执行过程中要先编译后执行,而且单线程并且不能利用多核cpu优势,和go相比,效率很低

2 .可以充分利用多核cpu优势

关键api transform & build

1 .transform:转换的意思,通过这个api,可以将ts,jsx,tsx 等格式的内容转换为js,transfrom只负责文件内容转换,并不会生成一个新的文件
2 .build ,执行构建逻辑,根据指定的单个或者多个入口,分析依赖,使用loader将不同格式的内容转换为js内容,生成一个或者多个bundle文件

esbuild 在Vite 中的巧妙使用

1 .预构建

1 .主要实现以下两个目的,将非ESM 规范的代码转换为符合ESM规范的代码
2 .将第三方依赖内部的多个文件合并为一个,减少http请求数量

1.1 寻找第三方依赖

1 .定义一个带onResolve hook,onLoad hook,esbuild plugin
2 .执行esbuild 的build 方法做打包构建
3 .代码中解析模块的路径的时候,会触发onResolve hook.在onResolve hook触发时,会传入模块的路径,根据路径,我们就可以判断出第三方依赖还是业务代码
4 .esbuild 完成构建,项目中的第三方依赖也就收集完毕了。所有的第三方依赖都会收集到一个deps列表中

1.2 合并,转换第三方依赖

1 .知道了项目中的第三方依赖以后,在做合并,转换操作就非常简单了
2 .vite直接通过esbuild提供的build方法,指定entryPoints为收集到的第三方依赖,format为esm,在做一次打包构建
3 .这一次会对第三方依赖做合并,转换操作。打包构建完成以后,再把构建内容输出到/node_modules/.vite/deps/下
4 .通过两次esbuild.build 预构建就完成了.第一次是找,第二次是真的构建
5 .寻找这些应该可以从package.json 里面拿。大部分都是没啥问题的,打包的时候再走依赖收集。

2 .内容转换

1 .Vite 中源文件的转换是在dev server 启动之后通过中间件实现的
2 .中间件对源文件的处理,分为resolve,load,transform,parse四个过程
3 .resolve: 解析url,找到源文件的绝对路径
4 .load: 加载源文件,如果是第三方依赖,直接将预构建内容返回给浏览器,继续走transform,parse
5 .transform:对源文件内容做转换,ts->js,less->css ,转换完的内容直接返回给浏览器
6 .parser:对转换以后得内容做分析,找到依赖模块,对依赖模块做预转换。等浏览器发起请求后,如果已经完成转换,直接将缓存内容返回给浏览器
7 .整个transform 阶段,是使用esbuild.transform时限的,对比webpack 的 loader处理源文件,是非常快捷,简单的
``

相关文章

  • 缓存机制

    之前在学 vite 时,vite开发模式基于 esbuild,现代浏览器都已经原生支持 esbuild,只要使用支...

  • vite-esbuild

    这篇文章对 esbuild 在 vite 中的应用做一个总结 vite 中 esbuild 的应用 esbuild...

  • vue3.X

    Vue.js3.0 源码组织方式的变化 CompositionAPI 性能提升 Vite 一、源码组织方式 源码采...

  • 网站架构

    提升系统性能 扩容 加缓存来提升系统并发能力 使用队列进行流量削峰 异步并发机制提升吞吐量或者接口性能 高并发原则...

  • react-router-dom v6 基本使用

    一、安装 二、使用 我们使用vite初始化react项目: 更多关于vite的使用,参考vite官网[https:...

  • 使用Vite开发Vue遇到的问题集合

    1、使用npm run dev启动项目时报错 Error: esbuild: Failed to install...

  • vite安装vue项目报错(Error: esbuild: Fa

    最近尝试使用vite,初始化vue项目之后,运行 npm run dev 报错,问题分析以及解决方案记录一下。 报...

  • 使用AsyncDisplayKit提升UICollectionV

    使用AsyncDisplayKit提升UICollectionView和UITableView的滚动性能 使用As...

  • 前端打包:tsup

    使用 tsup 的目的是为了快速的打包 TS 项目,使用 tsup 基于 esbuild 进行构建,打包 ts 文...

  • 新建项目 vite+vue3+ts

    使用 Vite vite 官网: https://vitejs.dev/[https://vitejs.dev/]...

网友评论

      本文标题:Vite 怎么使用Esbuild 来提升性能

      本文链接:https://www.haomeiwen.com/subject/xwiredtx.html