# koa2-cli **Repository Path**: zangzhihong/koa2-cli ## Basic Information - **Project Name**: koa2-cli - **Description**: 一个开箱即用基于koa2脚手架 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2021-10-07 - **Last Updated**: 2023-08-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # koa-cli #### 介绍 koa2后台服务 #### 软件架构 技术栈 koa2 + es6 + redis + orm(sequelize) + mysql + mvc + jwt #### 安装教程 1. npm i 2. npm run nodemon 启动热更改 3. npm run start 4. 依赖中已安装pm2,部署linux可直接pm2 start start-linux 5. 数据库等各项配置均位于config文件夹下,可根据实际配置做修改 #### 使用说明 1. 本脚手架优势,开箱即用,引入通过babel支持es6 语法 import export ,封装一些常用的工具, 脚手架将每个模块当做一个独立mvc,约定由于配置,位于app文件夹下的_m结尾标识改文件为一个模块, 脚手架会自动注册每个_m结尾文件夹下routers/index.js的每个路由, 新的模块可参照app下已有的四个模块已支持的功能包括图片上传服务器, 基础代码位于app文件夹common_m模块下,登录注册位于user_m,爬虫spider_m,服务器详细等system_m, 2. 项目所有配置均位于config文件夹下,数据库集成了mysql和mogodb数据库,mysql可通过sql原生语句操作和orm操作, orm方式运行npm run models即可将链接的远程数据库的数据模型自动生成到models文件夹下, 即可通过模型操作数据库 3. database文件夹下redis封装了简单的redis操作,常用数据和数据变更不频繁的可以通过redis缓存以提高性能 4. 日志中间价采用koa-log4生成的日志位于logger下,分别包含应用错误日志和请求日志,access普通请求日志,application系统异常日志,每天生成的文件名会以每天日期结尾。 5. middleware文件夹下封装了数据统一格式返回,每个模块server中只需返回如下结构, req包含本次请求方法和请求耗时 业务代码code为200返回到前端success为true,其余为false,前端可以通过拦截器统一拦截, code为200进入前端then方法,其余统一返回catch方法 `` return { code:200, msg:'success', data:list } `` 最终返回前端的结构类似 `` return { success, code, msg, data, time, req } `` #### 文件夹说明 ``` new_service ├─ .gitignore ├─ app │ ├─ article_m │ │ ├─ controller │ │ │ └─ index.js │ │ ├─ models │ │ │ └─ index.js │ │ ├─ routes │ │ │ └─ index.js │ │ └─ service │ │ └─ index.js │ ├─ common_m │ │ ├─ controller │ │ │ └─ index.js │ │ ├─ models │ │ │ └─ index.js │ │ ├─ routes │ │ │ └─ index.js │ │ └─ service │ │ └─ index.js │ ├─ index.js │ ├─ spider_m │ │ ├─ controller │ │ │ └─ index.js │ │ ├─ routes │ │ │ └─ index.js │ │ └─ service │ │ └─ index.js │ ├─ system_m │ │ ├─ controller │ │ │ └─ index.js │ │ ├─ models │ │ │ └─ index.js │ │ ├─ routes │ │ │ └─ index.js │ │ ├─ service │ │ │ └─ index.js │ │ └─ utils │ │ └─ get_system_message.js │ └─ user_m │ ├─ controller │ │ └─ index.js │ ├─ models │ │ └─ index.js │ ├─ routes │ │ └─ index.js │ └─ service │ └─ index.js ├─ app.js ├─ bin │ └─ www ├─ config │ ├─ dev.js │ ├─ index.js │ └─ product.js ├─ database │ ├─ mongo │ │ └─ mongoose.js │ ├─ mysql │ │ └─ mysql-native.js │ ├─ redis.js │ └─ sequelize │ └─ index.js ├─ logger │ ├─ index.js │ └─ logs │ ├─ access │ │ ├─ -2021-09-08.log │ │ ├─ -2021-09-09.log │ │ └─ -2021-09-10.log │ └─ application │ ├─ -2021-09-08.log │ └─ -2021-09-10.log ├─ middleware │ └─ format_response │ ├─ DateModel.js │ └─ index.js ├─ mock │ ├─ rule_list.js │ └─ spiderdata.js ├─ models │ ├─ articles.js │ ├─ init-models.js │ ├─ tags.js │ └─ users.js ├─ package-lock.json ├─ package.json ├─ public │ ├─ img │ ├─ index.html │ └─ stylesheets │ └─ style.css ├─ README.md ├─ utils │ ├─ crypto.js │ ├─ map.js │ ├─ queue.js │ ├─ request.js │ ├─ sequelize-auto.js │ └─ to.js └─ views ├─ error.pug ├─ index.pug └─ layout.pug ```