过去 oiyo 采用"不公开源码、不限使用"的发布方式,现在正式开源:
github:github.com/oiyojs/oiyo
gitee:gitee.com/oiyojs/oiyo
这次开源,意味着你可以直接读实现、提 issue、参与共建。
oiyo 是什么呢?
一个基于 uni-app 的增强工程框架。
uni-app 足够灵活,但项目一变大,路由、分包、页面配置、自动导入、请求封装这些"基建"就会变成很大的心智负担。
oiyo 想做的事很简单 —— 围绕 开箱即用 · AI协作 · 开发体验 · 降低心智成本 进行构建!
文件即路由
困扰:pages.json 手动维护,页面越加越多,遗漏、重复、路径写错
oiyo:页面放对目录自动注册,分包无需手动定义,系统自动识别
页面内定义页面信息
困扰:页面配置集中堆在 pages.json,离页面代码越来越远,每次增删改页面都闹心
oiyo:各自页面的标题、布局、TabBar、中间件都在相应自己的文件里,不用来回修改 pages.json
布局系统
困扰:TabBar布局、全屏布局等页面布局只能定义成组件,反复在几十个页面里声明、引入使用
oiyo:相同的页面布局只需在 src/layouts 定义,并在需要应用布局的页面声明名称,即可套用
可编写 <template> 的 App.vue
困扰:应用弹窗没有统一管理,每次使用只能反复手动引入弹窗组件,只能在页面、组件之间,不能在请求中调用,心智特别大
oiyo:应用级弹窗、应用级主题只需在 App.vue 定义,使用时任意一处均可调用
页面拦截器
困扰:页面如同奔放的野马,仍由其自由跳转,无法简单定义拦截页面功能,只能在页面生命周期拦截
oiyo:提供 所有页面 跳转拦截以及 单独页面 跳转拦截,定义和使用简单直观
自动 import api 与 组件
困扰:API 和组件逐个 import,每次都要写一长串 import
oiyo:API 与 Component 自动扫描免主动 import,内置常见路径,类型提示完整。
网络请求器
困扰:手动封装 uni.request、downloadFile、uploadFile,没有具体的规范以及前、后置拦截器,token 注入和错误提示散落各处
oiyo:请求器开箱即用,支持实例派生分层、请求与响应拦截器、自动重试、请求中断,一应俱全。
自动加载 .env.<模式> 的 manifest
困扰:没有类型提示、识别不了各 .env 中环境变量,每次只能手动维护
oiyo:完整类型提示、环境变量(.env 与 .env.<模式> )会被自动加载
快速开始
pnpm create oiyo@latest
文档:oiyo.js.org
仓库:
- Github:github.com/oiyojs/oiyo
- Gitee:gitee.com/oiyojs/oiyo
项目:
- Github:github.com/skiyee/oiyo…
- Gitee: gitee.com/skiyee/oiyo…
如果你正在维护一个越来越复杂的 uni-app 项目,欢迎试试,也欢迎来提第一个 issue。