uni-helper 2024 年路线图

24 阅读9分钟

image.png

👋 你好!这里是 uni-helper 团队!我们的目标是让 uni-app 开发过程更直观、高效,开发体验更出色!

你可能已经使用过我们提供的产品,比如:

更多产品可以探索我们的 官网!如果你还没有使用过我们的产品,欢迎尝试一下 ♥️

我们在这里分享我们的 2024 年路线图,希望你可以给我们一点反馈:

  • 你想要的功能;
  • 阻止你使用 uni-helper 的原因;
  • 你想给我们的建议。

让我们正式开始吧!

uni-pages

uni-pages 主要包含三个部分:

  1. vite-plugin-uni-pages

vite-plugin-uni-pages 作为核心,提供了基于文件的路由系统,你可以把它理解为 uni-app 生态下的 vite-plugin-pages。基于 vite-plugin-uni-pages,你可以使用 pages.config.ts 来生成 pages.json,享受完整的 TypeScript 支持。

在我们创建这个产品的时候,unplugin-vue-router 还处于很早期的阶段,所以我们在实现时参考 vite-plugin-pages 比较多,而现在更为推荐 unplugin-vue-router

我们期望在 2024 年参考它以做跟进,比如实现 definePage 等。事实上,已经有团队成员尝试增加 definePage(见 github.com/uni-helper/…),但由于各方面原因暂时搁浅,未来我们会继续跟进。

  1. volar-service-uni-pages

volar-service-uni-pages 为 <route> 块提供智能提示。借助 Volar 的力量,<route> 块可以拥有智能提示,减少出错的可能。

但是在 Volar 发布 v2 之后,由于各方面原因,我们没能及时跟进这部分内容。我们期望在 2024 年跟进 Volar 改动,继续提供良好的智能提示,让 uni-app 开发体验更出色。

  1. pages-json-schema

pages-json-schema 使用 TypeScript 类型生成针对 uni-app 的 pages.json 的 JSON Schema。你既可以在 JSON 文件中设置 $schema 来直接使用,也可以通过 VSC 插件 来使用。

在前不久,我们已经根据官网信息更新了一次相关的文件内容。我们期望在 2024 年继续定期跟进 uni-app 官网信息以更新相关类型和 JSON Schema,提供良好的类型提示体验。

uni-layouts

正如 vite-plugin-uni-pages 对标 vite-plugin-pages 一样,vite-plugin-uni-layouts 对标了 vite-plugin-vue-layouts,为 uni-app 提供了基于路由的布局,可以和 vite-plugin-uni-pages 结合使用以获得良好的开发体验。

我们期望在 2024 年继续参考跟进 vite-plugin-vue-layouts 的改动,提供更好的约定式路由系统和布局体验。

uni-manifest

vite-plugin-uni-pages 针对的是 pages.json,而 vite-plugin-uni-manifest 针对的则是 manifest.json。你可以使用 manifest.config.ts 来生成 manifest.json,享受完整的 TypeScript 支持。

我们正准备根据官网信息更新相关的文件内容,并推出 manifest-json-schema。同样地,我们期望在 2024 年继续定期跟进 uni-app 官网信息以更新相关类型和 JSON Schema,提供良好的类型提示体验。目前,你可以通过 VSC 插件 来使用。

uni-promises

尽管 uni-app 已经支持 API Promise 化(见 uniapp.dcloud.net.cn/api/#api-pr…),但我们认为这还远远不够。Vue2 和 Vue3 默认返回格式不一致,需要手动调整,强制要求不能传入 success、fail、complete 参数,TypeScript 类型存在问题,这些都造成了不小的心智负担。

我们认为 taro 在这一方面做得更好,受其启发,我们创建了 uni-promises 这一产品,基于回调方法封装 Promise,轻松地同时支持 Vue 2 和 Vue 3,并提供良好的 TypeScript 类型提示。

我们期望在 2024 年跟进更多的 API,提供更好的开发体验。

uni-use

在 Vue 团队官宣组合式 API 后,组合式 API 就成为了 Vue 开发的焦点,VueUse 的出现更进一步地推进了组合式 API。遗憾的是,uni-app 并不属于开发 Web 生态的一部分,所以我们不会在 VueUse 中看到相关的支持(见 github.com/vueuse/vueu…)。

在这样的背景下,我们创建了 uni-use 这一产品。它优先考虑 uni-app 生态环境下的 API 支持并封装了组合式方法,你可以结合 @vueuse/core 等通用包在 uni-app 开发环境中使用。

我们期望在 2024 年与社区讨论 uni-use 的发展,期待你的反馈。

uni-(app|cloud|ui)-types

我们热爱 TypeScript,我们认为 TypeScript 可以为你提供更好的开发体验,包括但不限于智能提示、编译时检查等。得益于 Volar 的强大功能和作者 johnsoncodehk 的辛勤付出,我们现在提供了 uni-appuni-clouduni-ui 相关组件的 TypeScript 类型(见 uni-app-typesuni-cloud-typesuni-ui-types)。在正确地配置后,你可以享受到完整的 TypeScript 支持,就像你使用 element-plus 等组件库提供的组件一样。

我们期望在 2024 年确认 Volar v2 是否对这些包造成了影响,同时我们也希望审视 Event 相关类型,以提高 H5 下开发的兼容性。如果没有意外,v1 稳定版将在今年内与你见面。

axios-adapter / uni-network

image.png

axios 毫无疑问是目前最流行的请求库之一,而如何将它移植到 uni-app 环境中使用也是一个值得讨论的问题。

我们内部提供了两种方向的解决方案,第一个是 axios-adapter,借助 adapater 和 polyfill 等内容将 axios 完整地搬到 uni-app 上,但是体积占用相对较大。而 uni-network 则选择从头匹配,使用 TypeScript 构建源码,精简了内容并保留了最核心的部分,体积占用相对较小。

我们并不强求二者必须合一,我们认为在不同场景下两者有各自的优势。我们期望在 2024 年继续跟进 axios 的动向。如果没有意外,uni-network v1 稳定版将在今年内与你见面。

unocss-preset-uni

image.png

UnoCSS 是强大的原子化 CSS 引擎,提供了愉悦的原子化 CSS 使用体验。和 VueUse 类似,UnoCSS 并未充分考虑 uni-app 开发环境,也因此,我们创建了 unocss-preset-uni,这是专为 uni-app 打造的预设,为你提供同样愉悦的原子化 CSS 使用体验。

我们目前正在着力于支持 UnoCSS v0.59 所带来的破坏性更新,期望在 2024 年可以持续优化相关内容。

vite-plugin-uni-tailwind

image.png

TailwindCSS 是目前最流行的原子化 CSS 引擎。我们创建了 vite-plugin-uni-tailwind 这一产品,支持在 uni-app 中使用 TailwindCSS 原有语法开发小程序。

我们主要从 mini-program-tailwindweapp-tailwindcss 中获取了灵感,在这里特别感谢它们。

我们期望在 2024 年跟进 TailwindCSS v4,同时也考虑处理 UnoCSS 所生成的样式类,以带来更好的原子化 CSS 开发体验。

vitesse-uni-app

vitesse-uni-app 是一个由 Vite & uni-app 驱动的跨端快速启动模板,它更注重小而美,不追求大而全。你可以通过 create-uni 来获取 vitesse-uni-app

同时,我们也注意到,不少朋友可能更需要一个大而全的模板,又或是需要一些选型指引,我们期望在 2024 年补充 vitesse-uni-app 的文档,同时也尝试进一步完善 awesome-uni-app 的内容,提供更好的指引方向。

uni-deploy

uni-deploy 是很早期我们的一个尝试,它支持自动化部署 uni-app 应用,灵感源于 taro-deploy

遗憾的是,由于各方面原因,我们没能继续开发下去。相应地,我们目前推荐 uni-mini-ci 或参考 实现自动上传微信小程序的 Vite 插件:从头到尾分解实现 自行实现。

目前 taro 官方提供了 @tarojs/plugin-mini-ci,我们将视情况讨论决定是否重启 uni-deploy 对标实现类似的功能,欢迎反馈讨论。

友好合作

uni-helper 最初启动开始,我们就一直避免重复轮子,并尽可能地与通用的包、库结合,让用户在 npm 和 node_modules 生态中找到熟悉的感觉,让用户继续受益于社区生态。我们的 unocss-preset-uni 就与 unocss-applet 展开密切合作以支持 UnoCSS

我们希望继续保持这种友好合作的态度,让我们一起走得更远。

可持续性

开源并非易事,我们都是在业余时间内凭借热情和热爱来做出自己的贡献,包括你当前看到的这一篇文章也是在业余时间写出。你可以在很多地方了解到开源的困难,比如 开源社区的暗面一位疲惫的维护者的笔记开源的心理建设 等,我们在这里也不打算过多地讨论这一点。

是社区和朋友让我们走到了现在这一步,我们也一如既往地鼓励有意愿增强 uni-app 系列产品的开发体验的朋友与我们一起贡献,即使是优化文档,我们也非常欢迎,我们期望能构建一个更广泛的 uni-helper 团队、一个更活跃的 uni-helper 社区,以保证 uni-helper 的可持续性。

如果你的公司或是你个人已经从我们的工作中受益,请考虑赞助我们的成员,无论是团队成员还是更广泛的社区成员,或是以其它方式回馈我们,比如提出合理的建议意见、提交 PR 等。同时,我们也打算根据 awesome-oss-monetization 做出一些改变,但请放心,你仍然可以继续免费使用我们目前提供的所有库(白嫖快乐🎉)。

小结

最后,非常感谢你在我们构建 uni-helper 相关产品过程中给予的信任、支持与反馈。与你、与社区内每一个人,共同努力让 uni-app 开发过程更直观、高效,开发体验更出色,这是一种荣幸。♥️

ModyQyW(代表整个 uni-helper 团队)