深入理解Node.js中通用基础设计模式

2020-06-17 06:45:33易采站长站整理

function userModel (options) {
var db;
if (!options.db) {
throw new Error('Options.db is required');
}
db = options.db;
return {
create: function (done) {
db.query('INSERT ...', done);
}
}
}
module.exports = userModel;

现在,我们利用它创建一个实例:


var db = require('./db');
var userModel = require('User')({
db: db
});

它为什么有用呢?它使测试变得更容易 – 当你写单元测试时,你可以把假的数据库实例注入模型。

Middlewares/pipelines 中间件/管道

中间件是一个强大功能且简单的概念:一个功能单元的输出是下一个功能单元的输入。如果你用过Express那么你已经使用了这个模式。

我们看一看 Koa 是如何做的:


app.use = function(fn){
this.middleware.push(fn);
return this;
};

所以基本上,当你添加一个中间件时,它只是被压入一个中间件队列中。但是当一个请求到达这个服务器会发生什么?


var i = middleware.length;
while (i--) {
next = middleware[i].call(this, next);
}

没什么神奇的 – 你的中间件被一个接着一个调用了。

Streams

你可以把流作为特殊的管道。他比较适合处理大量数据流,即他们是字节,而不是对象。


process.stdin.on('readable', function () {
var buf = process.stdin.read(3);
console.dir(buf);
process.stdin.read(0);
});

总结

以上所述是小编给大家介绍的Node.js中通用基础设计模式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对软件开发网网站的支持!