前言
上次我們搭建了一個基本的 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;
新聞熱點
疑難解答
圖片精選