文档地址中转
我们遇到的问题
在编辑器的各个面板里经常有跳转文档的按钮方便用户进行查看。但是随着时间的推移,有些文档地址做了修改,原先写死在代码里的地址就失效了。靠人为的维护这份数据是不可控的。而且发现问题之后也不能及时更新修正,需要等下一次发版。
解决方案
我们需要一套地址中转服务用来处理地址的重定向。它的主要功能是解析编辑器向他发起的地址参数,通过特定的规则,将这些参数组装成目标地址,进行重定向。 如果之前的地址失效了,它还可以维护一份映射关系,把旧地址重定向到新地址去。
优点如下:
- 在代码里不要写完整的链接地址,只需要声明关键参数即可
- 不管后期的文档地址如何变化,只要必要的参数不变,则只要更新中转服务的组装规则即可
- 如果有旧地址失效了,需要重定向到新地址,可以在线配置映射关系,及时生效。
如图示中流程:
- 引擎的代码里只要加个 @doc 修饰器并声明必要的参数即可。
- 编辑器会加上一些公共参数如当前的版本信息等
- 中转服务根据得到的参数,按约定好的规则进行组装,得到文档的真实地址
- 进入文档页面
如果新的文档系统,就是改了某个文档地址,可以考虑修改规则或者添加一份映射关系,将旧地址和新地址关联起来,由于都是在服务器配置,所以是及时生效的。避免用户看到 404 的情况。
疑问
现在我们如何知道哪些参数是引擎代码里必填的呢? 比如 https://docs.cocos.com/creator/api/zh/class/BaseRenderData 这个地址:
js
@doc({type: class, name: baseRenderData})
引擎里是传这样吗?希望 @godIsAProgrammer 或者引擎同学帮忙指点一下。
实现步骤
- 引擎增加文档地址参数的修饰器
- 编辑器增加一层组装,将一些公共配置如 version、language 等和修饰器里的参数一起拼接地址
- 维护一套中转服务用于重定向处理,需要一套明确的解析规则和维护一套废弃地址的映射表
- 文档系统(尽量设计的 url 有规律可循,要不然中转系统无法沉淀出规则)