os-client-core
重点关注
为了适应 ssr 数据前后端共享,以后全局数据不要放到某个模块内部,而是要放到 core 对象或者 startState 或者 surveyState 上。
这是巧思调研平台的调研客户端的核心程序包,
具体的使用文档请查看核心包文档
发布版本
类型说明
- 本库提供的所有供外部参考的类型名都已
CC
开头 (Client Core),仅供本包内部使用的用常规的 I
开头
- 因问卷系统数据结构非常复杂,复杂类型经常会多重继承获取动态能力的,名称差不多很容易混淆类型职责,为了快速分辨各个类型的意图,我们用了一套规则类合理的维护这种关系,并且按分类不同可能会在
CC
后加不同的字母以示区别,方便快速识别依赖关系
常规类型
不附加任何字母:CC
标准基类类型
:CCB
混入基类类型
:CCM
混入内容类型
:CCX
对于第 2 点的规则,这里举例说明:
比如我们以节点的类型关系举例:
选择题目需要基本节点功能,问题功能,选项功能,多选功能。
填空题目需要基本节点功能,问题功能,选项功能,选项输入数控制功能。
循环节点需要基本节点功能,选项功能。
其中基本节点功能是所有节点都需要的,当成标准基类类型
,子类节点总是继承这个类型,这里节点类型是服务目标。
其他功能是不同的节点按需多继承的混入基类类型
,这些混入基类类型
本身总是符合(继承)标准基类类型
的规范(因为他们只为服务目标存在),同时通过混入混入内容类型
获得额外的能力。
混入内容类型
不一定总会单独被定义,只有它需要被在脱离它的服务目标(这里是节点)的场合中被使用时,财货单独被定义,否则,它直接被合并在混入基类类型
中
所以类型会定义成如下这种方式:
interface CCBNode {
nodeUuid: string;
nodeName: string;
}
interface CCMQuestionNode extends CCBNode {
questionText: string;
describe: string;
}
interface CCMOptionNode extends CCBNode {
options: any[];
refOptions: any[];
optionRefers: any[];
}
interface CCXMultiSelect {
multiSelect: boolean;
multiMax: number;
multiMin: number;
}
interface CCMMultiSelectNode extends CCBNode, CCMOptionNode, CCXMultiSelect {}
interface CCMInputCountNode extends CCBNode, CCMOptionNode {
useFillCount: boolean;
fillCount: number;
}
interface CCSelectNode extends CCBNode, CCMQuestionNode, CCMOptionNode, CCMMultiSelectNode{
}
interface CCFillNode extends CCBNode, CCMQuestionNode, CCMOptionNode, CCMInputCountNode{
}
interface CCLoopNode extends CCBNode, CCMOptionNode{
}
## Git commit message 约定
格式如下,具体例子可以使用 `git log` 看看。
[详细描述,可选]
类型如下:
- feat: 新功能
- fix: 修补 bug
- docs: 文档
- style: 代码格式
- refactor: 重构,即不是新增功能,也不是修改 bug 的代码变动
- test: 测试
- chore: 构建过程或辅助工具的变动
注意:本仓库配置了一些提交前检查,如果遇到提交失败,请注意看其提示信息。