# node_express4_template **Repository Path**: solooo/node_express4_template ## Basic Information - **Project Name**: node_express4_template - **Description**: nodejs + express4 + mongodb 项目模板 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-11 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目说明 nodejs webServer项目框架模板 ### TODO - [x] 模块分层 - [x] 动态路由 - [x] restful api示例 - [x] mongo读写 - [x] 单元测试 - [ ] 权限中间件 ### 依赖框架 - nodejs - express - mocha - chai 其他详见 package.json ### 目录 ``` app 功能模块代码目录 config 配置文件目录 log 日志模块 middleware 中间件 public 静态文件目录 test 单元测试目录 utils 工具库 app.js 启动入口 routes.js 路由加载 package.json ``` ### 模块划分(app) app 目录下按不同功能模块划分目录,例:系统管理模块(system),产品管理模块(product) 每个模块目录下包含以下文件夹: ``` controller 接口控制 model 数据库映射model routes 请求路由 service 业务逻辑 ``` #### routes 负责路由配置,express 自带路由模块,将路由转发到对应的 controller 方法上 #### controller 负责接口参数处理,业务逻辑整合,向客户端返回数据。各个 controller 间*不可*相互调用,同一个 controller 可调用多个不同 service 完成数据封装 #### service 负责具体的业务逻辑处理,接收 controller 请求,对业务逻辑的处理都应放在此模块代码下,各个不同 service 可相互调用完成业务逻辑处理。 每个 service 可以对应一个 model,也可以不对应任何 model,而通过组合其他 service 来完成业务。不可对应多个 model #### model 数据库映射model,定义数据对象字段,所有对于同一个 model 的增删改查操作都应该同由同一个 service 来完成 ### 配置文件(config) 根据运行环境变量选择不同的配置文件,主要分为:开发环境(development),测试环境(test),生产环境(production) 具体配置文件目录: `config/env/` ### 中间件(middleware) 中间件负责处理统一逻辑内容,例如:权限校验等 ### 工具库(utils) 通用的业务不相关的方法调用或第三方库调用 ### 单元测试(test) 使用 mocha 做为单元测试框架, chai 断言 ### 其他 - 项目初始化 ```shell npm install ``` - 启动开发环境 ```shell npm run dev ``` - 运行单元测试 ```shell # 有覆盖率报告 npm run test # 无覆盖率报告 npm run t # 运行指定单元测试文件 npm run t test/user.test.js ``` - 生产环境启动 ```shell DEBUG=*debug,*Info,*Error node app.js -c config.json ```