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 管理帳號密碼