通用nodejs开发架构
一、整体架构
文章图片
以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`
- eslint
通过.eslintrc.json
文件配置相关格式化要求 - 编码方面
将常量集中到config
下,以引入的方式来获取,包括mysql
配置,redis
等数据库配置,服务器地址,加密秘钥等公共常量;
定义数据模型,将接口返回值的格式及内容定义到model
中(非db
中的model
,与db
同一级),保持输出统一,方便修改;
将常用的方法定义为工具类,放到utils
下统一管理;
一般文件名首字母大写意为输出为类class
;
推荐阅读
- 深入理解Go之generate
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 我的软件测试开发工程师书单
- echart|echart 双轴图开发
- NPDP拆书(三)(新产品开发战略(经营与创新战略))
- 芯灵思SinlinxA33开发板Linux内核定时器编程
- 常用git命令总结
- 藏族开发的修路人——记致富援乡的斯定那珠
- ASP.NET|ASP.NET Core应用开发思维导图
- VueX(Vuex|VueX(Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式)