掘金本周最热

在AI编程统治下,为什么UniApp开发更加需要这个框架?

8.5内容质量
在AI编程统治下,为什么UniApp开发更加需要这个框架?

TL;DR · AI 摘要

Oiyo框架通过简化配置、自动路由、智能布局等功能,显著提升了UniApp开发的效率和体验。

核心要点

  • Oiyo简化了UniApp的配置过程
  • 自动路由减少人工错误
  • 智能布局提高复用性

结构提纲

按章节快速跳转。

  1. 介绍UniApp开发面临的痛点。

  2. Oiyo框架通过三大理念改善UniApp开发体验。

  3. Oiyo允许在App.vue中直接编写代码,简化视图结构设计。

  4. Oiyo自动注册页面路由,减少人工错误。

  5. Oiyo支持智能布局,提高页面复用性。

  6. Oiyo减少冗余依赖,简化开发流程。

  7. Oiyo自动导入接口和组件,减少人工输入。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Oiyo框架改善UniApp开发

金句 / Highlights

值得收藏与分享的关键句。

#UniApp#Oiyo#前端框架
打开原文

痛点:最大化效率的心智负担

不管你是 “AI编程”糕手 还是 传统“非遗”手写仔,在面对 UniApp 工程时,我相信都会有一双特别的“大手”束缚着你,使开发效率无法达到理想状态。

不可否认 UniApp 是当前”一套代码、多端运行“中最贴近理想化的跨端框架,这本身是好事,但其的实现策略带来便利的同时,也携带了巨大的心智负担。

当你使用 HBuilderX 时

  • 强制工具:强依赖编辑器,无法脱离HBX开发
  • 非标工程:特制的目录结构,配置逻辑与主流工程割裂
  • 生态脱节:被”抹除“的包概念,配置理解成本过高

当你转向官方 CLI 时

  • 臃肿依赖:初始依赖包过多、且无相关说明
  • 配置繁琐:需要手动管理多个配置、来回切换多个文件
  • 没有提示:无组件、页面配置等类型提示

结果:这二者所导致的问题,在AI协作下就是纯纯大黑洞,因为理解不了非规范目录和混乱的配置,容易生成出一堆”无用”的”抽奖式“代码。

颠覆:最贴合的框架 oiyo

[Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 是基于 [UniApp](https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fdcloudio%2Funi-app%2F "https://github.com/dcloudio/uni-app/") 推出的增强型工程框架。以 融合AI协作提升开发体验降低心智成本 为三大理念!

1. 根部视图:App.vue 的 `<template>` 中写入口代码

“是的,我们有一个孩子”(😅 刚通网)。

是我们真的能够在 App.vue 中的 <template> 中写代码了!对于这个痛点中的痛点,[Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 不仅赋予了应用定义整体视图结构的能力,还支持通过配合指定宏,使全局数据持续保持状态。

视图结构设计:

Image 1: root.png
Image 1: root.png

全局数据切换页面仍保持:

Image 2: root.gif
Image 2: root.gif

了解更多请点击右边文字前往:[根部视图章节(oiyo文档)](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org%2Fdocs%2Fconcept%2Fapp "https://oiyo.js.org/docs/concept/app")

2. 自动路由:主、分包页面信息自动注册至 `pages.json`

[Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 约定 src/pages 以及 src/packages/<root>/pages 作为页面目录,自动基于这些目录中的文件进行路由注册。你无需手动操作 pages.json,就可以直接访问对应的页面。

AI 最容易在注册路由时犯错,要么漏了包名,要么写错路径。在 Oiyo 中,文件即路由,这意味着 AI 只要新建了文件,你的应用就已经感知到了它,零配置差错。

Image 3: route-logo.png
Image 3: route-logo.png

了解更多请点击右边文字前往:[自动路由章节(oiyo文档)](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org%2Fdocs%2Fconcept%2Froute "https://oiyo.js.org/docs/concept/route")

3. 智能布局:根据页面指定 NavBar、TabBar 等布局

当我们遇到相同的布局被多个页面所共享时,比如 A页面要指定某个 NavBar 结构的布局、B页面要指定某个 TabBar 的布局,都可以使用 oiyo 的智能布局。这是一个可以根据页面元信息而使用对应视图结构的布局系统,用于定义被多个页面使用的页面骨架。

Image 4: layout-logo.png
Image 4: layout-logo.png

了解更多请点击右边文字前往:[布局系统章节(oiyo文档)](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org%2Fdocs%2Fconcept%2Flayout "https://oiyo.js.org/docs/concept/layout")

4. 唯一依赖:只需要 @skiyee/oiyo 就够了

与 UniApp 官方项目、以及其他“模板”类项目不同,我们无需引入一大堆冗长且不清不楚的依赖。[Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 主打零冗余依赖,只有最核心的依赖!你不再需要考虑用什么版本稳定,什么版本配合没问题,免去了大部分信息缺失带来心智成本。

在调用脚本上,[Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 实现了交互式调用,无需编写一大堆脚本信息,避免因忘记某个脚本而再度重复查找。

Image 5: deps-logo.png
Image 5: deps-logo.png

了解更多请点击右边文字前往:[唯一依赖章节(oiyo文档)](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org%2Fdocs%2Fconcept%2Fdeps "https://oiyo.js.org/docs/concept/deps")

5. 自动导入:自动帮你 import 接口和组件

开发者常常为了复用一段 UI 或是 API,往往需要在多个页面中反复书写相似的 import 语句。为此 [Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 提供“自动扫描导入”的机制,预设了 component 目录、composables 目录、 @skiyee/oiyo/runtime,使得使用时无需手动引入。

当然,还支持自定义扫描,支持各大组件库。只有代码使用对应的 UI、API 时才会被引入,也就是说其行为是按需的!

这大大减少了 AI 生成代码时的‘幻觉’。它不再需要猜测你的组件放在哪个深度,只要按约定命名,剩下的交给 [Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 自动关联类型提示。

Image 6: import-logo.png
Image 6: import-logo.png

虽然默认策略会自动扫描,但如果团队更加偏爱“显式的依赖追踪”,也可以主动导入, [Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 不会阻止主动行为。

了解更多请点击右边文字前往:[自动导入章节(oiyo文档)](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org%2Fdocs%2Fconcept%2Fauto-imports "https://oiyo.js.org/docs/concept/auto-imports")

6. 类型系统:语法提示、提示还是提示!

在类型方面,[Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 支持全量类型。内置了组件类型、接口类型、以及别名等,拥有完善的类型提示体系。

[Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 在配合自动引入功能下,会自动生成被指定的 UI / API 对应类型,这就像是小龙女遇到杨过,天生一对。

只需要一行代码就能实现这些效果。

Image 7: type-logo.png
Image 7: type-logo.png
Image 8: type.gif
Image 8: type.gif

了解更多请点击右边文字前往:[类型系统章节(oiyo文档)](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org%2Fdocs%2Fstructure%2Ftsconfig "https://oiyo.js.org/docs/structure/tsconfig")

更多

以上6个大功能点,只是整个 [Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 其中具有代表性的功能,还有更多的细节功能,由于章节限制没有呈现出来。

欢迎通过脚手架启动开箱即用的项目进行体验:pnpm/npm/yarn/bun create oiyo@latest

融合:辅助AI编程的最佳直觉上下文

什么是AI编程中最核心的东西,毫无疑问就是清晰的上下文。[Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 这套体系采用了直觉化、约定式的项目结构,各大模块边界清晰,这可以让AI瞬间理解工程设计,提升代码准确率。

在后续不断迭代下,[Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 将会加入更多关于AI编程增能的元素。

结语:不是代替而是接轨

[Oiyo](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org") 并不是为了代替任何模板而生,而是为了使每一个 UniApp开发者 在 AI编程 的大热浪潮下也能够好好感受一番。在 AI 能够帮我们写业务逻辑的时代,我们不应该再把精力耗费在“对抗环境”上,不该再被繁琐的配置和割裂的生态所束缚。

如果你感兴趣不妨从以下方式开始:

网站:[oiyo.js.org](https://link.juejin.cn/?target=https%3A%2F%2Foiyo.js.org "https://oiyo.js.org")

Github: [github.com/skiyee/oiyo](https://link.juejin.cn/?target=https%3A%2F%2Fgithub.com%2Fskiyee%2Foiyo "https://github.com/skiyee/oiyo")

Gitee: [gitee.com/skiyee/oiyo](https://link.juejin.cn/?target=https%3A%2F%2Fgitee.com%2Fskiyee%2Foiyo "https://gitee.com/skiyee/oiyo")

脚手架:

  • 通过pnpm创建pnpm create oiyo@latest
  • 通过npm创建npm create oiyo@latest
  • 通过yarn创建yarn create oiyo@latest
  • 通过bun创建bun create oiyo@latest