老师你好,我想请教一下 Express框架下 router层 和 controller层 解耦的问题

来源:10-14 使用morgan写日志

朱昆鹏

2019-03-25

老师您的代码中 路由层返回 给前端数据,这里我打算做成 controller层 返给前端数据,router层只做路由处理功能,下面我写一些伪代码

// 路由层示例
const express = require('express')
const router = express.Router();

const ctrl = require('../controller/index') // 业务逻辑层

router
  .get('/',ctrl.test)
  .get('/testDb',ctrl.testDb)
  .post('/add',ctrl.add)
  
module.exports = router
// controller层示例
const { exec } = require('../db/mysql.js')
const { SuccessModel, ErrorModel } = require('../model/resModel.js')

const test = (req,res,next) => {
  res.json(new SuccessModel({msg:"测试:node服务器启动成功"}))
}

const testDb = (req,res,next) => {
  const sql = `连接数据库中表的 SQL 查询语句`
  exec(sql).then( testDbData => {
    res.json(new SuccessModel(testDbData))
  })
}
......

module.exports = {
  test // GET
  testDb, // GET
  ......
}

想问一下老师,我这中解耦方式正确么,因为后端掌握也不是很强,怕走错路,还望老师多多指点一下,多谢老师了

写回答

1回答

双越

2019-03-25

“controller 层返回给前端数据”—— 这本身就不合理,方向就错了。

路由层接收并处理前端请求,同时也就得负责返回给前端数据,有来有往都是对应好的。

1
0

Node.js+Express+Koa2+Nest.js 开发服务端

从入门到实战,一站式掌握 Node.js+Express+Koa2

4049 学习 · 2006 问题

查看课程