乐趣区

关于node.js:通用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
  • git brach

    master:主分支,用于部署生产环境的分支,确保 master 分支稳定性,个别由 develop 以及 hotfix 分支合并,任何工夫都不能间接批改代码
    develop:开发分支,始终保持最新实现以及 bug 修复后的代码
    feature:开发新性能时,以 develop 为根底创立 feature 分支 
    release:预上线分支,公布提测阶段,会 release 分支代码为基准提测
    hotfix:修复分支,线上呈现紧急问题时,须要及时修复,以 master 分支为基线,创立 hotfix 分支,修复实现后,须要合并到 master 分支和 develop 分支

    当有一组 feature 开发实现,首先会合并到 develop 分支,进入提测时,会创立 release 分支。
    如果测试过程中若存在 bug 须要修复,则间接由开发者在 release 分支修复并提交。
    当测试实现之后,合并 release 分支到 masterdevelop 分支,此时 master 为最新代码,用作上线。

  • eslint
    通过 .eslintrc.json 文件配置相干格式化要求
  • 编码方面
    将常量集中到 config 下,以引入的形式来获取,包含 mysql 配置,redis 等数据库配置,服务器地址,加密秘钥等公共常量;
    定义数据模型,将接口返回值的格局及内容定义到 model 中(非 db 中的 model,与 db 同一级),放弃输入对立,不便批改;
    将罕用的办法定义为工具类,放到 utils 下对立治理;
    个别文件名首字母大写意为输入为类 class;
  • 正文
    应用 jsdoc,每页文件注明形容 description、作者 author,办法注明作用、参数类型和形容、返回类型和形容;

边遇到边补充 ……

退出移动版