首页 > 语言 > JavaScript > 正文

express 项目分层实践详解

2024-05-06 15:27:25
字体:
来源:转载
供稿:网友

前言

上次我们搭建了一个基本的 express 后台,但是这样的项目结构的可扩展性,维护性和代码复用性都不是很好,参照之前学习 JavaWeb 时候的四层架构设计,用分层的思想来对 express 进行一点小优化,进一步提高代码的可拓展性。本文的源代码在 Github 上,建议看着代码来看这篇文章。

1 四(五)层结构概念

这个就简单说一下,所谓四层架构就是 Model实体层,Dao层(数据访问层也就是从数据库中查数据),Service层(业务逻辑层,也就是处理好数据),Controller层(视图控制层,在前后端分离的情况下就是写接口响应前端请求)和前端的 view(视图层),为啥要搞分层咧,说到底就是要解耦合,提高拓展性和维护性,写代码的时候,思路清晰一点,后面改代码的时候也知道要改哪边。

但是我们这次只是涉及后台的,视图层我们就不用管了,只需看前面的就行了。

2 分层

首先看一下项目结构哈

│ app.js│ package.json│ README.md│├─.idea│ │ express-project.iml│ │ misc.xml│ │ modules.xml│ │ vcs.xml│ │ watcherTasks.xml│ │ workspace.xml│ ││ └─inspectionProfiles├─bin│  www│├─config│  db.json│├─dao│  BaseDao.js│  UserDao.js│├─models│  user.js│├─public│ ├─images│ ├─javascripts│ └─stylesheets│   style.css│├─routes│  index.js│  users.js│├─services│  UserService.js│├─utils│  db-util.js│└─views  error.jade  index.jade  layout.jade

按照分层思想,我们新建几个文件夹哈,首先是 Model层的 models 文件夹,dao 层的 dao 文件夹,service 层的 services 文件夹,controller 层的话就用原来的 routes 文件夹就可以了,为了方便,我加了一个全局配置的 config 文件夹和工具函数 utils 文件夹。具体项目如下,我们从最底层开始来一个一个来分析

2.1 config

这个就放着各种配置文件,例如我的 db.json 里面就放了mongodb 的端口号,数据库名那些,反正就是各种配置啦

2.2 utils

这个就是有一些创建型的方法或者其他公共方法,像创建数据库连接池的方法我就放在这边的 db-util 里面了。

2.3 models

实体层,针对 mongodb 来说,一个集合对应一个 model,然后都是这样的形式啦。

const mongoose = require('mongoose');const { mongoClient } = require('../utils/db-util');// 创建 user Schemaconst user = new mongoose.Schema({ name: String, id: String,},{versionKey: false});/*model 的参数1 导出的模块名,参数2 创建的 Schema,参数2 指定数据库中的集合的名字,若不加的,则抹默认取‘第一个参数s'的集合*/let User = mongoClient.model('User', user, 'user');module.exports = User;            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选