alova.js--属于全干工程师的请求库

Shi Yi2025/07/25tooljavascriptvue

📌 缘由

这是来源于某个交流群的一位大佬的推荐(几个月前推荐的,但是我一直没时间去体验),正好最近有外包项目而且前端工程师比较忙,所以有一些部分是我来做的,正好可以体验一下。

TIP

目前已经用这个请求库写了两个页面了。


📖 介绍

alova.js 是一个以效率为目的的请求库,不仅有着类似的 openapi-typescript-codegen 的使用方法,还有缓存机制,还有 20+ 常见的请求策略。在 vscode 集成可以实现边提示文档入参边一键生成请求代码。

INFO

虽然我喜欢 idea,前端和后端都是用 idea 写的,当然也有 idea 的使用方法,只是可能没有 vscode 集成起来之后爽。


🛠️ 使用步骤

1. 安装 alova.js

npm install alova --save

2. 安装 wormhole

用来生成请求代码,我用的 idea,vscode 需要下插件进行集成:

npm i @alova/wormhole --save-dev

3. 生成配置文件

当前目录,自动选择配置文件类型:

alova init

4. 修改配置文件

根据需要修改,我改的是 openapi 的 json 文件的地址:

input: 'http://localhost:8219/v3/api-docs/all',

5. 生成请求代码

根据配置文件的 openapi 的 json 地址:

alova gen

6. 取消缓存策略

WARNING

我做外包要考虑啥性能??

cacheFor: 0

📂 生成产物

然后你会发现你配置文件指定的输出地址会生成四个文件,这些是关于请求的代码:

文件作用
index.js创建 alova 实例的地方
globals.d.ts返回类和请求方式定义的地方
createApis.js构建请求代码的文件
apiDefinitions.js存放请求地址的地方

🎯 使用示例

GET 方法

const res = await Apis.controller.getUsers({
    headers: {
        'Authorization': localStorage.getItem('token')
    }
});

这样直接就能获取返回的数据了,是不是连请求地址都看不见。

TIP

为什么是 getUsers 呢?这是你的某个 controller 下的某个方法,是不是感觉一下就拉近距离了。

POST 方法

const res = await Apis.general.saveRole({
    headers: {
        'Authorization': localStorage.getItem('token')
    },
    data: {
        role: selectRole.value,
        roleMenuName_zero: ["" + selectZeroMenu.value],
        roleMenuName: selectMenu.value.map(String)
    }
});

WARNING

你这怎么变成 Apis.general 了,刚刚上面那个明明不是这样的。

这可能应该牵扯后端定义 openapi 的时候的规范了,总得来说,后端确实没有进行良好的 openapi 良好的规范。还有一种可能,我后端是 openapi3 规范,而 alova 只支持到 swagger2 规范好像(general 是默认分组)。

我做外包我考虑这么多干嘛呢 😇


✨ 感受

目前写了两个页面,感觉还是很不错的,只需要想到自己写的后端 controller 的方法,就能请求到数据,而且在生成的文件中也附加有 swagger 的注释。

INFO

alova.js 的官方文档:点击这里跳转open in new window

我这里用的比较浅显,要很好地发挥工具的价值还是得看文档。

Last Updated 7/19/2026, 1:54:25 PM