# 框架
# 框架目录
StartCMS框架目录与TP目录结构有所不同,StartCMS框架中app目录下仅存放应用文件,每个应用是一个app目录的子目录,不再包含系统公共文件(如全局公共函数文件common.php,全局事件定义文件event.php等)
www WEB部署目录
├─app 应用目录
│ ├─app1 应用1
│ ├─app2 应用2
│ ├─app3...
├─base 前端基座工程(可移动到任意地方进行前后端分离开发)
├─config 系统配置目录
├─core 系统核心目录
├─data 数据存储目录
├─extend 扩展类库目录
├─runtime 应用的运行时目录(可写,可定制)
├─vendor Composer类库目录
├─web 前端基座目录(由基座工程目录编译生成)
├─.env.default 环境示例文件
├─.gitignore Git配置文件
├─.htaccess Apache配置文件
├─composer.json Composer配置文件
├─deploy.sh 自动化部署脚本
├─index.php 系统入口文件
├─start 命令行入口
# 系统目录
StartCMS系统目录是与app目录同级的core目录,系统核心功能如下:
- 账户管理
- 系统账户----管理系统内所有账户,包括管理员账户,游客账户,第三方授权账户
- 角色权限----定义账户角色权限,支持多角色功能授权
- 组织架构----定义账户所属组织,支持多级数据授权
- 系统配置
- 参数配置----管理包括应用在内的所有动态配置,配置项的定义请参考配置说明
- 权限管理----管理由权限标签自动生成的权限菜单数据,支持自定义权限
- 地区管理----通用全国行政区域数据库
- 日志管理
- 操作日志----所有账户操作日志
- 运行日志----系统运行日志
- 应用中心------管理系统所有应用的卸载,安装,升级
一般不需要在app目录下再定义一个admin应用来管理系统
www WEB部署目录
├─app 应用目录
├─base 前端基座
├─config 全局配置
├─core 系统目录
│ ├─common 系统公共服务目录
│ ├─controller 系统控制器目录
│ ├─installer 系统安装器目录
│ ├─listener 事件监听器目录
│ ├─middleware 全局中间件目录
│ ├─model 系统模型目录
│ ├─route 系统路由目录
│ ├─service 系统服务目录
│ ├─src 前端工程目录
│ ├─view 系统视图目录
│ ├─apidoc.json apidoc配置文件
│ ├─apidoc.md apidoc描述文件
│ ├─apidoc.php apidoc变量声明
│ ├─app.json 系统核心配置文件
│ ├─common.php 全局公共函数文件
│ ├─middleward.php 全局中间件定义文件
│ └─provider.php 服务提供定义文件
# 应用目录
每个应用是一个app目录的子目录(或者指定的composer库),每个应用具有独立的路由、配置,以及MVC相关文件,这些应用可以公用框架核心以及扩展。而且可以支持composer应用加载。
www WEB部署目录
├─app 应用目录
│ ├─app1 应用名
│ | ├─controller 控制器目录
│ | ├─installer 安装脚本目录(可选,安装卸载时调用)
│ | ├─facade 应用门面目录(可选,供其他应用调用)
│ | ├─middleware 中间件目录(可选)
│ | ├─model 模型目录
│ | ├─route 路由目录(可选)
│ | ├─service 服务目录
│ | ├─src 前端工程目录(可分离)
│ | ├─subscribe 事件订阅目录(可选)
│ | ├─view 视图目录
│ | ├─apidoc.json apidoc配置文件(可选)
│ | ├─apidoc.md apidoc描述文件(可选)
│ | ├─apidoc.php apidoc变量声明(可选)
│ | ├─app.json 应用描述文件(必须)
│ | ├─common.php 应用公共函数文件(可选)
│ | ├─middleward.php 应用中间件定义文件(可选)
│ | └─event.php 应用事件定义文件(可选)
│ │
│ ├─app2... 更多应用
# 应用描述
注意
每个应用目录下都需要一个应用描述文件app.json,不然系统无法识别安装该应用
一个最小有效的应用描述文件如下
{
"icon": "", // 应用图标
"name": "", // 应用标识(英文,与目录同名)
"entry": "", // 应用入口(输出html的url地址)
"title": "", // 应用名称(中文,2-4个中文字符)
"summary": "", // 应用简介(一句话介绍应用功能)
"description": "", // 应用描述(富文本应用描述,支持MarkDown)
"version": "v1.0.0",// 版本号
"category": [], // 分类
"licence": "", // 协议
"author": "", // 作者
"dependencies": [], // 应用依赖(其他应用标识)
"startcms": { // 框架版本
"min-version": "v1.0.0", // 框架最低版本
"max-version": "v1.0.2" // 框架最高版本
}
}
一个完整的应用描述文件如下
{
"icon": "", // 应用icon
"name": "", // 应用标识(英文,与目录同名)
"entry": "", // 应用入口(输出html的url地址)
"dev_entry": "", // 应用调试入口(应用开启调试后生效)
"ssr": false, // ssr模式(后端渲染模式)
"debug": false, // 调试模式(可以在应用管理中动态设置)
"sandbox": true, // js沙箱隔离(禁用沙箱可能会导致一些不可预料的问题,通常情况不建议这样做。)
"scopecss": true, // css样式隔离(禁用样式隔离可以提升页面渲染速度,在此之前,请确保各应用之间样式不会相互污染。)
"title": "", // 应用名称(中文,2-4个中文字符)
"summary": "", // 应用简介(一句话介绍应用功能)
"description": "", // 应用描述(富文本应用描述,支持MarkDown)
"version": "v1.0.0",// 版本号
"category": [], // 分类
"licence": "", // 协议
"author": "", // 作者
"documentation": { // 手册
"user": "", // 使用者手册
"admin": "", // 管理者手册
"developer": "" // 开发者手册
},
"dependencies": [], // 应用依赖(其他应用标识)
"startcms": {
"min-version": "v1.0.0", // 框架最低版本
"max-version": "v1.0.2" // 框架最高版本
},
"auth": [ // 自定义权限节点
{
"app": "", // 应用标识(可选,默认当前应用)
"icon": "", // 菜单图标(可选)
"name": "core_account", // 权限标识(英文,小写字母开头+下划线)
"title": "账户管理", // 权限名称(中文,菜单/功能名称)
"parent": "core", // 上级节点
"node": "core/account", // 权限节点(后端路由)
"path": "/core/account", // 权限路径(前端路由)
"view": "", // 视图模板
"params": "", // 路由参数
"redirect": "", // 跳转地址
"menu": 1, // 是否为菜单
"auth": 1, // 是否权限控制
"admin": 0, // 是否仅限管理员访问
"super": 0, // 是否仅限超管员访问
"route": 0, // 是否仅作前端路由(有无权限都返回)
"status": 1, // 启用状态
"cache": 0, // 启用缓存
"sort": 7, // 排序
}
],
"config": [ // 应用可配置项目(具体参数可参考form-create表单项)
{
"group": "站点配置", // 配置分组
"title": "站点名称", // 配置名称
"type": "input", // 配置类型
"field": "title", // 字段名称(确保同一应用内唯一)
"value": "StartCMS", // 字段值
"options": [], // 配置选项
"validate": [], // 验证规则
"props": {}, // 配置属性
"default": "", // 默认值
"remark": "", // 备注
"locking": 1, // 是否锁定(禁止编辑更新)
"protected": 0 // 是否保护(前端无法获取)
}
]
}