alova 贡献指南
你好,很高兴在这遇到你,这是一份详细的 alova 贡献指南,它包含对 alova 各个方面的贡献提供了详细的指导,请继续往下看。
前言
在过去的一段时间里,我们在 Github issues 和 Github Disscussion 中收到了来自世界各地的开发者积极参与的信息,深感荣幸,这意味着 alova 正在被越来越多的开发者喜爱。即便如此,alova 也还属于新秀,它依然还有很长一段路需要走。
我们期望将 alova 打造成每位愿意参与的人的共同项目,我们以开放包容的态度鼓励每个人成为 alova 社区的贡献者。而且,我们认 为贡献 alova 不局限于代码贡献,而是参与任何有利于 alova 发展的活动都属于贡献 alova, 现在参与贡献可以为你赢得更多的有效贡献机会,它可以让你为全世界的开发者提供你的价值,即使你是一位初级开发者,只要想法符合 alova 的使命和设计理念,也请大方地参与进来!
这里有一份社区行为公约,请参阅。
贡献目录
这里提供 13 个可贡献之处供你选择,但不局限于这些,你可以选择自己希望参与的部分后,链接到对应位置详细阅读:
- 在项目中使用 alova
- 为 alova 点星
- 报告 bug
- 提出新特性想法
- Pull Request
- 基于 alova 编写适配器和策略库
- 参与社区交流/PR review
- [发布和传播 alova 的信息](#发布和传播 alova 的信息)
- 分享使用经验
- 项目合作
- 项目捐赠
- 更正或编写文档
- 翻译文档
alova 使命和设计理念
alova 使命
alova 的使命为它指出了明确的发展方向,它清晰地定义了 alova 什么应该做。
alova 是一个以全 JS 环境可运行的,请求策略为主要方向的请求工具,主要帮助开发者极致地减少 API 的消费流程,提升效率,我们认为这是下一代请求工具的方向,它的使命就是让开发者在编写少量代码的同时,也能实现更高效地 Client-Server 数据交互。
对于开发者来说,alova 为他们提供了简单的 api 和开箱即用的高级请求功能,以及各种简单的、高性能的请求策略模块,对于应用的用户来说,它们可以享受到 alova 的高性能数据交互带来的流畅体验,因此,alova 具备了以下特性:
- 与 axios 相似的 api 设计,让使用者学习成本更低;
- 深度绑定 UI 框架,大大提高开发者的使用收益;
- 开箱即用的高级功能,避免重复封装,例如请求共享、请求缓存等,减少开发者 重复封装;
- 平台无关的编码方式,可在不同平台完美迁移;
- 高扩展性设计,可封装高复用、高性能的业务相关的请求策略;
- 高聚合低耦合的 method 设计,提高 api 代码维护性;
alova 设计理念
设计理念指出了它应该如何设计,以下为 alova 的核心设计理念。
- Method 代理设计,高聚合、平台无关的设计,贯穿请求始终,你在任意请求函数中都应该可以访问到它,从另一个角度说,与请求相关的信息也应该被放在 method 实例中;
- state 代理设计,这是我们实现 UI 框架无关的关键技术,它可以让 alova 的 useHooks 在不同 UI 框架中运行,因此在编写 useHooks 时请使用 state 代理;
- 高扩展性设计,其一,alova 的设计中大量使用了适配器模式和钩子函数,例如适配器有
requestAdapter
、l1Cache/l2Cache
等,钩子函数有beforeRequest
、reseponded
、transform
、cacheFor
等,而且大多存在默认行为,这样设计的目的是为了在保留高扩展性的同时,使用也足够简单;其二,全局请求参数可覆盖,例如timeout
、shareRequest
等,对于特别的请求可单独设置这些参数。 - api 设计具有普适性,其一,它表示此 api 的功能具有较高的抽象层级,而不是针对某一个具体业务而提出的;其二,api 设计具有可扩展性,以适应 api 的迭代
api 普适性设计仅适用于 alova 库,如果你正在构思一个请求策略,那么可以根据具体业务来设计。
选择你感兴趣的贡献点
在项目中使用 alova
我们认为,你们在项目中使用 alova 也是属于 alova 的贡献者,这也是在告诉人们,alova 是值得信任的开源项目,请在这个 issue中提交你的项目,这可能会获得在 alova 官网展示你项目的机会。
为 alova 点星
虽然这可能会被认为微不足道,但这代表了你对 alova 的认可,对 alova 来说每一个 star 也是至关重要,请在alova 的 Github 仓库的右上角为我们点亮星星,这对我们很重要。
报告 bug
请移步到Github new issue中选择对应的模板提交,详细说明将会在提交 issue 中展示。
请注意: 如果你想问 alova 相关的问题,请到Github Disscussion中创建,在 issue 中提问将会被立即关闭。
提出新特性想法
为了让 alova 可以实现它的价值和目标,在提交一个新特性想法前,请仔细阅读alova 使命和设计理念,并保证你的新想法符合 alova 的使命和设计理念。
然后,请到🚀 新特性提案中提交,详细说明将会在提交 issue 时展示。
Pull Request
你可以通过 pull request 贡献以下 3 个方面的代码。如果你是一位有意向参与的新伙伴,在Github 贡献列表中列出了所有的good first issue
的 issues,它用来告诉有兴趣参与贡献的新伙伴,这个是一个好的开始。
bug 修改
在 Github issues 中被标记为bug:confirmed
的 issues,都是已被确认的 bug,你可以自由选择。
如果你自己遇到了 bug,也请先报告 bug确保 bug 被确认,以避免造成无效的 pull request。
新特性开发
在 Github issues 中被标记为feature-request:confirmed
的 issues,都是已被确认的新特性,你可以自由选择。
如果你有一个添加新特性的想法,也请先提交一个新特性想法的 issue确保想法被确认,以避免造成无效的 pull request。
项目配置
如果你很擅长项目配置,并发现了 alova 项目的不足之处,例如不够完整的配置、配置版本太老旧、自动化不足(包含项目开发自动化和 Github 仓库管理的自动化),你也可以按新特性开发的流程进行贡献。