👋 你好!这里是 uni-helper 团队!我们的目标是让 uni-app 开发过程更直观、高效,开发体验更出色!
你可能已经使用过我们提供的产品,比如:
- vitesse-uni-app - 由 Vite & uni-app 驱动的跨端快速启动模板
- uni-use - uni-app (vue3) 组合式工具集
- uni-app-types - 为 uni-app 内置组件提供 TypeScript 类型
- uni-network - 为 uni-app 打造的基于 Promise 的 HTTP 客户端
- unocss-preset-uni - 专为 uni-app 打造的 UnoCSS 预设
- uni-app-snippets-vscode - uni-app 的 VSCode 代码片段
- vite-plugin-uni-tailwind - 在 uni-app (vue3) 中使用 tailwindcss@3 原有语法开发小程序
更多产品可以探索我们的 官网!如果你还没有使用过我们的产品,欢迎尝试一下 ♥️
我们在这里分享我们的 2024 年路线图,希望你可以给我们一点反馈:
- 你想要的功能;
- 阻止你使用 uni-helper 的原因;
- 你想给我们的建议。
让我们正式开始吧!
uni-pages
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/…),但由于各方面原因暂时搁浅,未来我们会继续跟进。
volar-service-uni-pages
为 <route>
块提供智能提示。借助 Volar 的力量,<route>
块可以拥有智能提示,减少出错的可能。
但是在 Volar 发布 v2 之后,由于各方面原因,我们没能及时跟进这部分内容。我们期望在 2024 年跟进 Volar 改动,继续提供良好的智能提示,让 uni-app 开发体验更出色。
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-app
、uni-cloud
和 uni-ui
相关组件的 TypeScript 类型(见 uni-app-types、uni-cloud-types、uni-ui-types)。在正确地配置后,你可以享受到完整的 TypeScript 支持,就像你使用 element-plus 等组件库提供的组件一样。
我们期望在 2024 年确认 Volar v2 是否对这些包造成了影响,同时我们也希望审视 Event
相关类型,以提高 H5 下开发的兼容性。如果没有意外,v1 稳定版将在今年内与你见面。
axios-adapter / uni-network
axios 毫无疑问是目前最流行的请求库之一,而如何将它移植到 uni-app
环境中使用也是一个值得讨论的问题。
我们内部提供了两种方向的解决方案,第一个是 axios-adapter,借助 adapater 和 polyfill 等内容将 axios
完整地搬到 uni-app
上,但是体积占用相对较大。而 uni-network 则选择从头匹配,使用 TypeScript 构建源码,精简了内容并保留了最核心的部分,体积占用相对较小。
我们并不强求二者必须合一,我们认为在不同场景下两者有各自的优势。我们期望在 2024 年继续跟进 axios
的动向。如果没有意外,uni-network
v1 稳定版将在今年内与你见面。
unocss-preset-uni
UnoCSS 是强大的原子化 CSS 引擎,提供了愉悦的原子化 CSS 使用体验。和 VueUse 类似,UnoCSS
并未充分考虑 uni-app
开发环境,也因此,我们创建了 unocss-preset-uni,这是专为 uni-app
打造的预设,为你提供同样愉悦的原子化 CSS 使用体验。
我们目前正在着力于支持 UnoCSS
v0.59 所带来的破坏性更新,期望在 2024 年可以持续优化相关内容。
vite-plugin-uni-tailwind
TailwindCSS 是目前最流行的原子化 CSS 引擎。我们创建了 vite-plugin-uni-tailwind 这一产品,支持在 uni-app
中使用 TailwindCSS
原有语法开发小程序。
我们主要从 mini-program-tailwind 和 weapp-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
团队)