一、整体架构


以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

    次要typefeat:减少新性能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,办法注明作用、参数类型和形容、返回类型和形容;

边遇到边补充 ......