rrreol icon indicating copy to clipboard operation
rrreol copied to clipboard

设计思路

Open himself65 opened this issue 6 years ago • 13 comments

花了两天把https://github.com/Himself65/create-bread-app 基本撸完了 然后突发奇想,如果oi-test也有这种东西该有多好(虽然我并不参加

目前的设计思路

#8

himself65 avatar Mar 10 '19 04:03 himself65

建议使用基于 React 的 UI 库 Material UI (material-ui.com)

建议使用 Reflux 实现前端数据交换 (不影响 koa 的使用,使用 Reflux 可以将诸如 Ajax 请求与 cookies 操作等从 React 本身剥离出来)

(~~本人准备要动工做的 OI 平台 Multi_OI 大概需要你的库,所以我最近或许能腾出时间帮你写点什么~~)

langyo avatar Mar 10 '19 06:03 langyo

@langyo 你可以自己写一个demo

himself65 avatar Mar 10 '19 11:03 himself65

项目结构

- lib   # 核心库文件,包括但不限于judge和helpers、utils
- src  # 界面库文件
    - cli   # 命令行部分
    - ui    # UI部分
    - server # 服务器部分,负责打通ui和cli的通信

himself65 avatar Mar 10 '19 14:03 himself65

core部分

judge通过结合EventEmitter、child_spawn等实现测试程序,如果需要安全沙盒则可以将此部分部署到docker中

// todo

himself65 avatar Mar 10 '19 15:03 himself65

cli部分

结合commander库实现快速测试程序,需要judge

himself65 avatar Mar 10 '19 15:03 himself65

ui部分

暂时考虑使用React.js,包含Redux(如果需要),使用element-ui或ant-design

附带一提,此部分仅仅是作为方便显示程序,实际上没有任何逻辑代码

himself65 avatar Mar 10 '19 15:03 himself65

server部分

可以部署到生产环境

通过ui部分的信息来操作cli(并不直接操作lib),使用koa.js,不包含任何安全检查,可以考虑做成koa的插件,方便使用

himself65 avatar Mar 10 '19 15:03 himself65

其他细节

  • 使用eslint,eslint-config-standard检查代码正确

  • babel采用pipeline-operator、function-bind等stage-x特性来提升代码体验

  • lib、cli、serve采用rollup打包,ui库使用webpack打包

  • rrreol使用lerna维护

himself65 avatar Mar 10 '19 15:03 himself65

本人并不是经常能够上线 qq,不过 Github 常在线,会定期检查邮箱

Q 已加,你把上头的验证答案修改掉吧,

另外,UI 部分或许可以考虑 material-ui?(本人能力推此库不是没有理由的,它确实做的很棒)

langyo avatar Mar 10 '19 15:03 langyo

@langyo 你有空可以到/src/ui中写一个脚手架 能运行就行那种

himself65 avatar Mar 11 '19 09:03 himself65

@langyo 你有空可以到/src/ui中写一个脚手架 能运行就行那种

收到了

langyo avatar Mar 11 '19 10:03 langyo

@langyo 今晚我会写好脚手架

himself65 avatar Mar 11 '19 14:03 himself65

JudgeWrapper 属于伪需求, 已经删除

#116

himself65 avatar Apr 14 '19 03:04 himself65