通用nodejs开发架构

一、整体架构
通用nodejs开发架构
文章图片

以nodejs项目为例(非前后端分离),分层结构设计,分层说的就是将要做的事抽象出来,分成相互联系的几部分,反应在项目中就是文件结构。
上图将项目分为viewroutercontrollercacheservicedb几部分,其中:(以下均为同名文件夹)

  • view
    view 使用 ejs 模板,相当于 ssr 服务端渲染;
    包含一个组件文件夹、多个业务界面;
    注:
    除了正常业务的界面,通常会有个 error404 界面;
    还会将公共组件放在 view/layout 下,供 ejs 引用;
  • router
    router 分为 viewapi
    view 路由负责加载 ejs,作为页面导航;
    api 路由实际就是接口,作数据渲染;
    包含一个路由文件夹、一个接口文件夹;
  • controller
    主要是包含 router api 接口中涉及到的业务逻辑;
    包含多个业务文件;
  • service
    controller 过来的需要调用数据,访问数据库的部分逻辑;
    包含多个业务文件;
  • db
    包括数据库的配置,表的数据模型等内容;
    需要包含一个配置文件、一个执行同步的文件、一个表模型文件夹;
  • cache
    一般采用 redis 作为缓存库,包括 redis 的配置、get/set 定义和业务文件;
    需要包含一个配置文件、多个业务文件;
二、技术选型
重点说连接数据库、缓存库部分:
  • view、router
    view 这里采用 ejs 模板,如果是前后端分离,前端采用框架的话,这个 view 层就单独为前端 vue/react 项目了,同样的,router 也不需要 view 层的路由了。
  • db
    连接数据库,不同数据库有不同的 orm 可供操作:
    关系型数据库 mysql 可以使用 sequelize 来连接数据库,还可以搭配 sequelize-auto 自动生成表模型 model
    非关系型数据库 mongodb 可以使用 mongoose 来连接数据库
三、规范
这里规范包括团队协作、代码风格、编码习惯,业务等
  • git
    commit 规范
    主要 `type` `feat`:增加新功能 `fix`:修复bug 特殊 `type` `docs`:只改动了文档相关的内容 `style`:不影响代码含义的改动,例如去掉空格、改变缩进、增删分号 `build`:构造工具的或者外部依赖的改动,例如 `webpack`,`npm` `refactor`:代码重构时使用 `revert`:执行 `git revert` 打印的 `message`

  • eslint
    通过 .eslintrc.json 文件配置相关格式化要求
  • 编码方面
    将常量集中到 config 下,以引入的方式来获取,包括 mysql 配置,redis 等数据库配置,服务器地址,加密秘钥等公共常量;
    定义数据模型,将接口返回值的格式及内容定义到 model 中(非 db 中的 model,与 db 同一级),保持输出统一,方便修改;
    将常用的方法定义为工具类,放到 utils 下统一管理;
    一般文件名首字母大写意为输出为类 class;
【通用nodejs开发架构】边遇到边补充 ......

    推荐阅读