看的几个例子,写法都比较简单: var router = require(‘koa-router’)(); var Ninja = require("…/models/ninja") var apiNinjas = require("./api/ninjas")
router.get(’/’, async function(ctx, next) {
const ninjas = await Ninja.find()
ctx.state = {
title: ‘Naruto’,
ninjas: ninjas
};
await ctx.render(‘ninjas’,{})
})
module.exports = router;
这个查询比较简单只是model.find(),如果查询逻辑复杂一点,这块的代码能抽离出来在不同的地方调用吗,比如我想写成api,可以通过http直接访问接口,也可以后台require这个服务,然后在后端把数据和模板render。这个怎么做,代码放在mvc那一层?
还是说这种逻辑代码不需要单独拿出来,如果是api和后台render页面的两种方式,写两遍?大家实践中是怎么做的
浏览器-web服务层-service层-dao层,理论上讲你那个方法应该放在service层里面去,为web层提供数据,web层返回渲染结果或者处理结果
@sanrudongfeng 哦感谢,开始看别人博客到了Dao层,没理解清楚,再请教下,后来我想再写个controller层,相当于router和controller层分开,这样做可取吗
题主搞java的吧
@DevinXian 不是啊
@IEfucker 虽然逻辑简单的时候你放在router里面看起来没事,但这真的不是一个好习惯啊,放在serive里面。nodejs里面的router就相当于controller了,分发请求,controller以前的那些相当于java的拦截器过滤器之类,在router里面调用service里提供的方法,service里面调用dao