【uni-app】oiyo 开源啦!

0 阅读3分钟

过去 oiyo 采用"不公开源码、不限使用"的发布方式,现在正式开源:

github:github.com/oiyojs/oiyo

gitee:gitee.com/oiyojs/oiyo

这次开源,意味着你可以直接读实现、提 issue、参与共建。

oiyo 是什么呢?

一个基于 uni-app 的增强工程框架。

uni-app 足够灵活,但项目一变大,路由、分包、页面配置、自动导入、请求封装这些"基建"就会变成很大的心智负担。

oiyo 想做的事很简单 —— 围绕 开箱即用 · AI协作 · 开发体验 · 降低心智成本 进行构建!

文件即路由

困扰:pages.json 手动维护,页面越加越多,遗漏、重复、路径写错

oiyo:页面放对目录自动注册,分包无需手动定义,系统自动识别

示例:oiyo.js.org/docs/guide/…

页面内定义页面信息

困扰:页面配置集中堆在 pages.json,离页面代码越来越远,每次增删改页面都闹心

oiyo:各自页面的标题、布局、TabBar、中间件都在相应自己的文件里,不用来回修改 pages.json

示例:oiyo.js.org/docs/guide/…

布局系统

困扰:TabBar布局、全屏布局等页面布局只能定义成组件,反复在几十个页面里声明、引入使用

oiyo:相同的页面布局只需在 src/layouts 定义,并在需要应用布局的页面声明名称,即可套用

示例:oiyo.js.org/docs/guide/…

可编写 <template> 的 App.vue

困扰:应用弹窗没有统一管理,每次使用只能反复手动引入弹窗组件,只能在页面、组件之间,不能在请求中调用,心智特别大

oiyo:应用级弹窗、应用级主题只需在 App.vue 定义,使用时任意一处均可调用

示例:oiyo.js.org/docs/guide/…

页面拦截器

困扰:页面如同奔放的野马,仍由其自由跳转,无法简单定义拦截页面功能,只能在页面生命周期拦截

oiyo:提供 所有页面 跳转拦截以及 单独页面 跳转拦截,定义和使用简单直观

示例:oiyo.js.org/docs/guide/…

自动 import api 与 组件

困扰:API 和组件逐个 import,每次都要写一长串 import

oiyo:API 与 Component 自动扫描免主动 import,内置常见路径,类型提示完整。

示例:oiyo.js.org/docs/guide/…

网络请求器

困扰:手动封装 uni.request、downloadFile、uploadFile,没有具体的规范以及前、后置拦截器,token 注入和错误提示散落各处

oiyo:请求器开箱即用,支持实例派生分层、请求与响应拦截器、自动重试、请求中断,一应俱全。

示例:oiyo.js.org/docs/guide/…

自动加载 .env.<模式> 的 manifest

困扰:没有类型提示、识别不了各 .env 中环境变量,每次只能手动维护

oiyo:完整类型提示、环境变量(.env 与 .env.<模式> )会被自动加载

示例:oiyo.js.org/docs/struct…

快速开始

pnpm create oiyo@latest

文档:oiyo.js.org

仓库:

项目:

如果你正在维护一个越来越复杂的 uni-app 项目,欢迎试试,也欢迎来提第一个 issue。