开发须知

若您想对 Cardinal 进行二次开发,请先阅读此开发须知。

前端开发

依赖

启动

在进行前端开发测试前,请先启动好 Cardinal 后端,然后执行:

# 安装依赖
yarn install
# 运行
yarn serve
1
2
3
4

WARNING

经测试 Node.js v14.2.0 版本运行前端会报错,请考虑更换 v13.x 版本。

之后访问命令行中的网址即可。 您可以修改./src/utils.js文件来指定测试时的后端 API baseURL,从而方便您的开发。

此修改仅对测试环境有效。生产环境编译后为/api路径。

import axios from 'axios'

let baseURL = '/api'
if (process.env.NODE_ENV === 'development') {
    baseURL = 'http://localhost:19999/api'
}




 

1
2
3
4
5
6

前端打包

Cardinal 是前后端分离的 Web 应用,但最终是将前端打包进了一个二进制文件分发给用户。

具体打包整合细节,请参考这篇文章open in new window

  1. 生产环境编译:
    yarn build
    
    1
  2. 前端打包成.go文件
    togo http -package dist -output dist_gen.go
    
    1
  3. git commit & git push
  4. 前端在 GitHub 发布新的 Release

后端开发

依赖

依赖安装

export GO111MODULE=on
export GOPROXY=https://goproxy.cn
go mod tidy
1
2
3

目录结构

.
├── LICENSE
├── README.md
├── cardinal.go
├── conf                    (配置文件)
├── frontend                (前端)
├── go.mod
├── go.sum
├── internal
│   ├── asteroid            (Asteroid 3D 大屏)
│   ├── auth
│   │   ├── manager         (管理员登录验证)
│   │   │   └── manager.go
│   │   ├── middleware.go   (登录验证中间件)
│   │   └── team            (选手登录验证)
│   │       └── team.go
│   ├── bootstrap           (启动入口)
│   │   ├── bootstrap.go
│   │   └── bridge.go
│   ├── bulletin            (公告)
│   │   └── bulletin.go
│   ├── container           (Docker 容器支持)
│   │   ├── container.go
│   │   ├── docker.go
│   │   └── image.go
│   ├── db                  (数据库)
│   │   ├── model.go
│   │   └── mysql.go
│   ├── dynamic_config      (动态设置)
│   │   └── dynamic_config.go
│   ├── game                (比赛相关)
│   │   ├── bridge.go
│   │   ├── challenge.go
│   │   ├── check.go
│   │   ├── flag.go
│   │   ├── gamebox.go
│   │   ├── rank.go
│   │   └── score.go
│   ├── healthy             (健康检查)
│   │   ├── healthy.go
│   │   └── panel.go
│   ├── install             (安装向导程序)
│   │   └── install.go
│   ├── livelog             (实时日志)
│   │   ├── handler.go
│   │   ├── livelog.go
│   │   ├── stream.go
│   │   └── subscriber.go
│   ├── logger              (后台大屏日志)
│   │   └── log.go
│   ├── misc                (杂项)
│   │   ├── sentry.go
│   │   ├── version.go
│   │   └── webhook         (WebHook)
│   │       └── webhook.go
│   ├── route               (Web 路由)
│   │   ├── router.go
│   │   └── wrapper.go
│   ├── store               (缓存)
│   │   └── store.go
│   ├── timer               (时间)
│   │   ├── bridge.go
│   │   └── timer.go
│   ├── upload              (文件上传)
│   │   └── file.go
│   └── utils               (组件)
│       ├── const.go
│       ├── utils.go
│       └── utils_test.go
├── locales                 (国际化)
│   ├── en-US.yml
│   ├── i18n.go
│   └── zh-CN.yml
├── test                    (测试)
│   ├── bulletin_test.go
│   ├── cardinal_test.go
│   ├── challenge_test.go
│   ├── log_test.go
│   ├── manager_test.go
│   ├── team_test.go
│   └── webhook_test.go
└── uploads                 (上传文件存储目录)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

更新前端

go get -u github.com/vidar-team/Cardinal_frontend
go get -u github.com/vidar-team/Cardinal_manager_frontend
1
2