cmswing基于Thinkjs框架开发,项目目录结构类似如下(可通过 thinkjs 命令创建完项目或模块):
|-- nginx.conf
|-- package.json
|--pm2.json
|-- **src**
| |-- **common**
| | |-- adapter
| | |-- bootstrap
| | |-- **config**
| | | |-- env
| | | |-- locale
| | |-- controller
| | |-- model
| | |-- service
| |-- **admin**
| | |-- config
| | |-- controller
| | |-- logic
| | |-- model
| |-- **ext**
| | |-- config
| | |-- controller
| | |-- logic
| | |-- model
| |-- **mod**
| | |-- config
| | |-- **controller**
| | | |--question
| | |-- logic
| | |-- model
| |-- **topic**
| | |-- config
| | |-- controller
| | |-- logic
| |-- **uc**
| | |-- config
| | |-- controller
| | |-- logic
| | |-- model
| |-- **view**
| | |-- admin
| | |-- common
| | |-- ext
| | |-- mod
| | |-- sp
| | |-- topic
| | |-- uc
| |-- **view**
| | |-- backup
| | |-- static
| | |-- upload
| |-- **runtime**
注:指定不同的模式创建的项目目录结果可能有细微的差别,但总体是类似的。
##nginx.conf
nginx 的配置文件,建议线上使用 nginx 做反向代理。
##src
源代码目录,使用 --es6 参数创建项目才有该目录。项目启动时会自动将 src 目录下的文件编译到 app 目录下。
如果没有使用 ES6 特性创建项目,则直接有 app/ 目录。
###src/common
通用模块目录,项目目录都是按模块来划分的,common 模块下存放一些通用的处理逻辑。
###src/common/bootstrap
项目启动目录,该目录下的文件会自动加载,无需手动 require 。
可以在这个目录下文件里定义一些全局函数、注册中间件等常用的功能。
定义全局函数
~~~
// src/common/bootstrap/fn.js
global.formatDate = obj => {
...
}
~~~
这里定义了一个全局函数 formatDate,那么项目里任何地方都可以直接使用该函数。
注册中间件
~~~
// src/common/bootstrap/middleware.js
think.middleware('parse_wechat', wechatMiddleware({
...
});
~~~
这里定义了一个中间件 parse_wechat,那么就可以在配置文件 hook.js 里将该中间件注册进去了。
注:bootstrap 只能放在 common 模块里。
###src/common/config
配置文件,这里放一些通用的配置。
其中:路由配置、hook 配置、本地化配置等必须放在这里。
~~~
"use strict";
/**
* config
*/
export default {
//key: value
};
~~~
###src/common/controller
控制器,放一些通用的控制器。其中 error.js 里错误处理的不同行为,项目里可以根据需要进行修改。
##src/admin
admin 模块,项目后台模块,管理所有的数据处理及添加。
##src/admin/logic
逻辑处理。每个操作执行前可以先进行逻辑校验,可以包含:参数是否合法、提交的数据是否正常、当前用户是否已经登录、当前用户是否有权限等。这样可以降低 controller 里的 action 的复杂度。
~~~
"use strict";
/**
* logic
* @param {} []
* @return {} []
*/
export default class extends think.logic.base {
/**
* index action logic
* @return {} []
*/
indexAction(){
}
}
~~~
###src/admin/controller
控制器。一个 url 对应一个 controller 下的 action。
~~~
"use strict";
import Base from "./base.js";
export default class extends Base {
/**
* index action
* @return {Promise} []
*/
indexAction(){
//auto render template file index_index.html
return this.display();
}
}
~~~
###src/admin/model
模型。数据库相关操作。
###src/ext
扩展模型,方便二次开发
###src/mod
扩展模型,方便二次开发及扩展更多符合业务需求的功能
###src/mod/question
扩展模块之独立问答模型,功能类似于wecenter的专业问答社区。
###src/topic
内容、栏目及分类管理模型,可添加系统模型分类,独立模型分类。
###src/uc
前后台用户中心管理模型,支持用户注册登录,前台文章投稿等功能
##view
视图目录,存放对应的模版文件。如果支持国际化和多主题,那么视图目录下需要有对应的子目录。
##www
项目的可访问根目录,nginx 里的根目录会配置到此目录下。
##www/development.js
开发模式下项目的入口文件,可以根据项目需要进行修改。www/production.js 为线上的入口文件。
入口文件的代码类似如下,可以根据项目需要进行修改。
~~~
var thinkjs = require("thinkjs");
var path = require("path");
var rootPath = path.dirname(__dirname);
var instance = new thinkjs({
APP_PATH: rootPath + "/app",
ROOT_PATH: rootPath,
RESOURCE_PATH: __dirname,
env: "development"
});
instance.compile({retainLines: true, log: true});
instance.run();
~~~
##www/static
存放一些静态资源文件。
##runtime
项目运行时生成的一些目录,如:缓存文件目录,用户上传的文件临时存放的目录。
- CmsWing概览
- CmsWing是什么
- CmsWing能干啥
- 运行&部署
- 1.windows 运行 cmswing
- 2.Linux 运行 cmswing
- 3.使用 docker 部署
- 4.部署方式推荐
- 5.Nginx反向代理 并做动静分离
- 配置
- 快速上手
- 首页
- 后台使用说明
- 内容
- 内容管理
- 栏目管理
- 分类信息
- 回收站
- 网站模版
- 电商
- 营销推广
- 订单中心
- 支付与配送
- 财务管理
- 系统
- 用户管理
- 用户信息
- 权限管理
- 用户行为
- 行为日志
- 系统设置
- 网站设置
- 模型管理
- 配置管理
- 菜单管理
- 导航管理
- 数据库备份
- 微信
- 公众号设置
- 群发消息
- 素材管理
- 微信用户管理
- 自动回复
- 自定义菜单
- 扩展
- 项目结构
- 目录结构
- 模型设计
- 插件设计
- 用户行为设计
- 权限设计
- 文档模型设计
- 下载模型设计
- 图片模型设计
- 视频模型设计
- 商城模型设计
- 栏目设计
- 分类信息设计
- 模板规则
- 模版标签入门
- 模块类
- 模板语法规则
- 模版模型
- 模板调用方法
- 二次开发说明
- 命名规范与编码规
- 数据库字典
- 公共函数,Adapter,Middleware的使用规范
- 权限管理扩展说明
- 模型扩展开发说明
- 附录
- 配置参考
- 函数库参考
- Adapter参考
- Middleware参考
- FAQ
- Admin 管理
- 01.如何重置后台admin 管理帐号密码