一、整体架构
以 nodejs 我的项目为例(非前后端拆散),分层结构设计,分层说的就是将要做的事形象进去,分成互相分割的几局部,反馈在我的项目中就是文件构造。
上图将我的项目分为 view
、router
、controller
、cache
、service
、db
几局部,其中:(以下均为同名文件夹)
- view
view
应用ejs
模板,相当于ssr
服务端渲染;
蕴含一个组件文件夹、多个业务界面;
注:
除了失常业务的界面,通常会有个error
和404
界面;
还会将公共组件放在view/layout
下,供ejs
援用; - router
router
分为view
和api
;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
分支到master
和develop
分支,此时master
为最新代码,用作上线。 - eslint
通过.eslintrc.json
文件配置相干格式化要求 - 编码方面
将常量集中到config
下,以引入的形式来获取,包含mysql
配置,redis
等数据库配置,服务器地址,加密秘钥等公共常量;
定义数据模型,将接口返回值的格局及内容定义到model
中(非db
中的model
,与db
同一级),放弃输入对立,不便批改;
将罕用的办法定义为工具类,放到utils
下对立治理;
个别文件名首字母大写意为输入为类class
; - 正文
应用jsdoc
,每页文件注明形容description
、作者author
,办法注明作用、参数类型和形容、返回类型和形容;
边遇到边补充 ……