基于express实现三层架构开发。下图为学生管理系统开发
。一般为相应的HTML发送Ajax请求。即为从sms.html 发送Ajax请求给students.js
一:划分为1:表示层,主要为接受用户发送的请求,以及数据的返回,为客户端提供应用程序的访问.2:业务逻辑层:主要负责对数据的操作,也就是把一些数据层的操作进行组合。3:数据访问层。主要时对数据进行操作
二:基于express建立的三层结构,一般目录如下。,public(静态页面html书写处),routes(里面的stuendts.js接受静态页面的请求,及返回数据),service(里面的stuendtsService.js 对routes里面的stuendts.js传来的数据进行操作,并返回结果),dao(数据层)
注:dao层,作为数据处理层,一般也分为三部分,参见最后一图
dao层,作为数据处理层,一般也分为三部分。①(db.js),直接和数据库相连。②在dao文件夹里面建立子文件见models,在其下面建立数据库的骨架,并根据骨架创立模型。(studentsModel.js)③(studentsDao.js),直接对数据进行操作的界面,接收service文件夹下studentsService.js 传来的数据,根据传来的数据,对数据库里面的数据进行增删查改的操作,并返回结果给service文件夹。
三详细流程和实现代码。
1:public下的静态页面
//发送Ajax
Ajax({
url:"./students/getStudents",
data:,
success(){
}
})
2:routes文件夹下的students.js//接收页面发来的信息,并反馈
//引文件
var express = require('express');
var router = express.Router();
const studentsService = require("../service/studentsService");
//具体操作如下操作
router.get('/getStudents', async function (req, res, next) {
const pager = req.query;
const data = await studentsService.getStudents(pager);
res.send(data);
});
module.exports= router;
3:service文件夹下的studentsService.js//
const studentsDao = require("../dao/studentsDao"); //引入
const getStudents = async (pager) => {
let data = await studentsDao.getStudents(pager)
return data
}
module.exports = { getStudents }//暴露
4: studentsDao.js//对数据库的数据进行操作
const mongoose = require("mongoose");//引入mongoose
const studentsModel = mongoose.model("students");
const getStudent = async ( )=>{
const data = await studentsModel.find();
return data;
}
module.exports = { getStudents }//暴露
5:db.js//连接数据库
const mongoose = require("mongoose");//引入mongoose
mongoose.connect("mongodb://localhost/xxxxx",{useNewUrlParser:true,useUnifiedTopology:true});
mongoose.connection.on("connected",function(){
console.log("mongoose已经成功链接上了xxxxx");
})
require("./models/studentsModel")//引入文件studentsModel.js
6:studentsModel.js//创建数据模板
const mongoose = require("mongoose");//引入mongoose
const studentsSchema = new mongoose.Schema({//创建骨架
name: String,
age:Number,
gender:String,
grade:Number,
addr:String,
phone:String,
}, {versionKey: false});
const studentsModel = mongoose.model('students', studentsSchema,"students");//根据骨架创建模版