如何在KOA中编写公共模块?

时间:2015-08-04 12:14:02

标签: javascript koa

我想制作一个由许多控制器使用的公共模块,我写的是这样的:

//module.js
export.node = function(that){
 return co(function*(){
  .....
    var data = {
      name:"xx"
    };
     return data;
 })
}

//controller.js
var dataUtil = require('../module');
var _data = dataUtil(this);

还有其他解决方案吗?

2 个答案:

答案 0 :(得分:1)

您无需将您的生成器包裹在co中;你可以简单地用yield *把它带进来,所以:

// utils/node.js
exports.node = function *(that) {
    var bar = yield someAsyncThing();
    that.body = { bar: bar };
}

然后调用它

var node = require('./utils/node').node;
api.get = function *() {
    yield *node(this);
});

答案 1 :(得分:0)

使用yield可以使用异步函数同步方法     exports.node = function *getData(){ var data = 'xxxxx'; return data; }

`var node = require('').node;
 var data = yield node()`