Ste*_*her 11 javascript modularity node.js express
所以,我被告知在nodeJS 中传递request
和/或response
变量是"不好的做法".但这意味着你的大部分代码都必须在server.js文件中,这使得它变得杂乱无章.
你如何模块化你的nodejs服务器,req/res
适当地传递并能够将你的代码组织成单独的文件?
例如,我想我的分裂插座的路由,.get
并.post
为不同的文件,但仍然可以使用回调参数,如下所示:
app.io.route("disconnect", function(req,res) { <--- these params
db.query("UPDATE player_data SET online=0 WHERE id="+mysql.escape(req.session.user));
req.io.broadcast("event", {msg:req.session.username+" has logged out!"});
app.io.broadcast("reloadXY");
});
Run Code Online (Sandbox Code Playgroud)
截至目前,他们都在一个文件中,我不喜欢这样.
我认为这个人在"四处传播"中的意思是这样的(简单明了):
app.get('/kittens', function(req, res) {
db.doAthing(req);
updateSomethingElse(res);
upvoteThisAnswer(res);
});
Run Code Online (Sandbox Code Playgroud)
也就是说,将两个变量传递到第一个函数之外.这很糟糕,因为要弄清楚呼叫实际结束的位置变得越来越困难.一个小res.end(500)
的updateSomethingElse
可能会导致卡的整个房子轰然倒塌.
在其他地方(通常是/routes
项目的目录)声明回调是完全可以的(事实上,标准到了快递中的默认值).
// app.js
var user = require('./routes/user')
, kittens = require('./routes/kittens');
// express stuff...
app.get('/settings', user.getSettings);
app.get('/fur', kittens.shed);
Run Code Online (Sandbox Code Playgroud)
然后,在routes/user.js
:
exports.getSettings = function(req, res) {
// Note how we're passing around properties of req/res, not the objects themselves.
db.getUserSettings(req.user.id).then(function(settings) {
res.render('settings', settings);
});
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
341 次 |
最近记录: |