vue-asyncx
语义化的 Vue 异步组合式工具库
2,873
5
| Install | |
|---|---|
npm install vue-asyncx |
|
| Latest Version: | 1.11.4 |
| Vue: | 2 · 3 |
| License: | MIT |
| Last Updated: | Sep 24, 2026 |
| Links: | GitHub · npm |
Maintainer: xuyimingwork
特性
- 异步样板代码减少 40%+,专注业务逻辑本身
- 关联状态自动生成并命名,代码结构自解释
- 内建竞态处理机制,避免并发请求导致的数据错乱
- 插件化 addon 架构,异步能力可组合、可扩展
- SSR 友好设计,无浏览器依赖,服务端执行安全可控
- 兼容 Vue 3 / Vue 2.7,零第三方依赖
- 完整的 TypeScript 类型设计与推导支持
- 100% 单元测试覆盖,300+ 用例保障行为稳定

安装
pnpm i vue-asyncx
快速开始
useAsyncData (异步数据管理)
需要使用异步数据 user 时,调用 useAsyncData 传入数据名和数据获取函数即可。useAsyncData 会自动处理与异步函数相关的 data, loading, arguments, error 等状态。
import { getUserApi } from './api'
import { useAsyncData } from 'vue-asyncx'
const {
user,
queryUserLoading,
queryUser,
} = useAsyncData('user', getUserApi) // 代码即注释:使用异步数据 user
queryUser('Mike')
更多内容,见:useAsyncData
useAsync (异步函数管理)
当不需要异步数据,只关注异步函数的执行状态时:调用 useAsync 传入函数名和异步函数即可。useAsync 会自动处理与该异步函数相关的 loading, arguments, error 等状态。
import { submitApi } from './api'
import { useAsync } from 'vue-asyncx'
const {
submit,
submitLoading,
submitError,
} = useAsync('submit', submitApi) // 代码即注释:使用异步函数 submit
// 表单提交
action="@click="submit(formData)"
更多内容,见:useAsync
设计哲学:约定带来效率
与 useRequest 返回固定的 data、loading、error 不同,useAsyncData 将关联的函数、变量统一命名:
user:由异步函数更新的数据dataqueryUser:更新user的异步函数queryUserLoading:调用queryUser时的loading状态
刚接触可能有些不习惯,但这种方式带来可读性和效率的双重提升,在大型项目、多人团队中尤为明显。
代码中看到 queryUserLoading 变量,就知道它和 user 变量以及 queryUser 函数有关。
并且这一切,都可以自动提示。

更多内容,见:命名约定
高级用法示例:并行同语义操作
在一些场景中,同一个异步操作可能需要分组并行多次调用(例如列表中多个按钮触发同一操作)。
vue-asyncx 通过 withAddonGroup 插件提供支持

👉 适用于:列表操作 / 批量操作 / 多实例异步
const {
confirm,
confirmGroup
} = useAsync('confirm', confirmApi, {
addons: [
withAddonGroup({
key: (args) => args[0], // 使用第一个参数作为分组 key
}),
],
})
详细内容,见:withAddonGroup
兼容性
- TS >= 5.4;可放宽至 TS >= 4.1
- 支持 Vue 3.x / 2.7
Related Packages
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 1.11.4 | ^2.7.0 || | MIT | |
| 1.11.3 | ^2.7.0 || | MIT | |
| 1.11.2 | ^2.7.0 || | MIT | |
| 1.11.1 | ^2.7.0 || | MIT | |
| 1.11.0 | ^2.7.0 || | MIT | |
| 1.10.1 | >=3.0.0 | MIT | |
| 1.10.0 | >=3.0.0 | MIT | |
| 1.9.1 | >=3.0.0 | MIT | |
| 1.9.0 | >=3.0.0 | MIT | |
| 1.8.0 | >=3.0.0 | MIT | |
| 1.7.0 | >=3.0.0 | MIT | |
| 1.6.0 | >=3.0.0 | MIT | |
| 1.5.4 | >=3.0.0 | MIT | |
| 1.5.3 | >=3.0.0 | MIT | |
| 1.5.2 | >=3.0.0 | MIT | |
| 1.5.1 | >=3.0.0 | MIT | |
| 1.5.0 | >=3.0.0 | MIT | |
| 1.4.0 | >=3.0.0 | MIT | |
| 1.3.0 | >=3.0.0 | MIT | |
| 1.2.0 | >=3.0.0 | MIT | |
| 1.1.0 | >=3.0.0 | MIT | |
| 1.0.4 | >=3.0.0 | MIT | |
| 1.0.3 | >=3.0.0 | MIT | |
| 1.0.2 | >=3.0.0 | MIT | |
| 1.0.1 | >=3.0.0 | ||
| 1.0.0 |
Pre-releases (4)
| Version | Released | Vue | License |
|---|---|---|---|
| 1.11.3-rc.0 | ^2.7.0 || | MIT | |
| 1.11.0-beta.0 | ^2.7.0 || | MIT | |
| 1.10.0-beta.0 | >=3.0.0 | MIT | |
| 1.10.0-alpha.0 | >=3.0.0 | MIT |