UNPKG

5.96 kBMarkdownView Raw
1# 系统体系结构
2
3## 项目根目录
4
5根目录下存放一些重要的系统文件
6
7package.json 依赖包列表
8gameconfig.js 节点部署配置文件
9README.md 系统简介
10LICENSE 版权声明
11.gitignore GIT仓库忽略文件列表
12
13## facade
14
15系统核心代码
16- plugin: 存放对核心类进行扩充的函数集
17 目录下default.js中的函数将直接挂接于CoreOfBase
18 目录下{name}.js中的函数将挂接于CoreOfBase.{name}。函数的第一个参数env由系统自动注入,指向核心对象。
19 例如,default.js 有一个函数 urlToCdn(env, url),当前核心对象为 fo,则可以通过 fo.urlToCdn(url) 来调用该函数,其中 env 指向 fo。
20 @note 之所以不采用this指针指向核心对象的方式,而是单独注入env参数,是因为前者很难借助词法分析器的帮助来降低函数书写的难度。
21 @note 扩展函数的作者,需要在熟悉核心类内部构造的基础上,自行规避命名冲突问题
22
23- middleware:存放作用于来访信息流的用户自定义中间件
24 系统中间件、用户自定义中间件的名称可以配置于 Control.middleware 中,例如:
25 class test extends facade.Control {
26 get middleware(){
27 return ['userDefine1', 'userDefine2'];
28 }
29 }
30 指示对造访控制器test的信息流,依次应用 userDefine1、userDefine2 这两个中间件进行处理
31
32- core: 存放自定义的核心类。
33 在当前框架中,每个独立进程启动时唯一创建一种核心类的单态实例,承载一定的功能集合。内置的核心类包括Index(注册码'Index',可重定义)、Logic(注册码'IOS'、'Android',可重定义)
34 app/core 下有一个实现范例 CoreOfImage(注册码'Image'),承载抓取网络图片(例如社交网络的头像)的功能
35 核心类的注册码可用于运行环境配置文件game.config.js中
36
37- util:存放自定义逻辑模块
38
39- model:存放数据库管理相关类
40 entity:实体类,唯一对应一个ORM类,对其进行功能扩展,其实例可接受Mapping、Ranking等容器类的管理
41 table:ORM类,直接映射一张数据库表
42 assistant:ORM辅助类,针对 User(代表用户的ORM类) 的单个字段进行功能拓展,支持脏数据检测、自动序列化存储。例如,item提供用户背包管理功能,其存储结构映射为User.item上。
43
44- define:枚举和数据结构定义
45- control:访问控制类,规范了客户端/服务端远程交互接口,以及服务端/服务端RPC交互接口
46- events:自定义事件类,用于各模块间解耦
47- service:自定义扩展服务类(继承自FSM),服务器启动时为这些类自动创建单例对象,注入为facade.current.service的属性成员
48
49## app
50
51该目录用于存放所有用户自定义代码
52
53### plugin: 存放对核心类进行扩充的函数集
54
55- 目录下default.js中的函数将直接挂接于CoreOfBase
56- 目录下{name}.js中的函数将挂接于CoreOfBase.{name}。函数的第一个参数env由系统自动注入,指向核心对象。
57例如,default.js 有一个函数 urlToCdn(env, url),当前核心对象为 fo,则可以通过 fo.urlToCdn(url) 来调用该函数,其中 env 指向 fo。
58
59@note 之所以不采用this指针指向核心对象的方式,而是单独注入env参数,是因为前者很难借助词法分析器的帮助来降低函数书写的难度。
60@note 扩展函数的作者,需要在熟悉核心类内部构造的基础上,自行规避命名冲突问题
61
62### middleware
63
64存放作用于来访信息流的用户自定义中间件。
65
66### core: 存放自定义的核心类。
67在当前框架中,每个独立进程启动时唯一创建一种核心类的单态实例,承载一定的功能集合。内置的核心类包括Index(注册码'Index')、Logic(注册码'IOS'、'Android')
68app/core 下有一个实现范例 CoreOfImage(注册码'Image'),承载抓取网络图片(例如社交网络的头像)的功能
69核心类的注册码可用于运行环境配置文件game.config.js中
70
71### util:存放自定义逻辑模块
72### model:存放数据库管理相关类
73- entity:ORM映射类,唯一对应一个ORM底层类,对其进行功能扩展,其实例可接受Mapping、Ranking等容器类的管理
74- table:表映射类,直接映射一张数据库表
75- assistant:ORM辅助类,针对 User(代表用户的ORM类) 的单个字段进行功能拓展,支持脏数据检测、自动序列化存储。例如,item提供用户背包管理功能,其存储结构映射为User.item上。
76
77### define:枚举和数据结构定义
78
79### control:访问控制类
80规范了客户端/服务端远程交互接口,以及服务端/服务端RPC交互接口
81
82### events:自定义事件类
83用于各模块间解耦
84
85### service:自定义扩展服务类(继承自FSM)
86
87服务器启动时为这些类自动创建单例对象,注入为facade.current.service的属性成员
88
89## config
90
91该目录集中存放 HTTPS证书、配置文件、系统维护任务、数据迁移记录
92
93- cert:https证书
94- data:数据配置文件
95- maintain:维护和数据修复
96- migrations:数据库迁移
97
98## .gamegold
99
100该目录用于 gamegold 节点存放配置信息和数据库文件
101
102## docs
103
104该目录存放系统说明文档,作为根目录下 README.md 的扩展阅读
105
106## logs
107
108该目录记录系统运行日志
109
110## test
111
112该目录存放单元测试文件
113
114## web
115
116该目录存放静态资源文件,用于架设对外服务的 Web Server
117
118## coverage
119
120覆盖率测试报告,可以使用如下命令重新生成:
121
122```bash
123npm run cover
124```