假设我们正在使用快递。为什么我们使用这样的回调:
var port = process.env.PORT || 8080;
app.listen(port, function(){
console.log('Listenning: ' + port);
});
而不是:
var port = process.env.PORT || 8080;
var onBegin = function() {
console.log('Listenning: ' + port);
}
app.listen(port, onBegin);
这是必须的吗?或者第二个可能会导致问题?我看到很多人使用内联回调,但为什么不简单地在另一个块或文件中定义所有回调?如果这是必须的,我在哪里可以找到所有最佳实践?例如,我找到了以下链接,但你能推荐别的吗?像必须,基础知识等。
我找到的链接: https://www.codementor.io/mattgoldspink/nodejs-best-practices-du1086jja
编辑:
这是另一个回调函数,作为我使用参数的变量:
var onGET = function(req, res) {
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
console.log('User connected: ' + ip);
res.send('OK: ' + req.query.id);
}
app.get('*', onGET);
答案 0 :(得分:1)
匿名回调通常在教程和指南中显示,因为初学者更容易理解。在开发实际应用程序时,它不起作用。
以下是实际路线的示例:
app.get('/user/', User.authenticate, User.getData);
注意,理解这种方式是多么容易。另一种方式仅适用于指南和教程,对于实际应用,使用命名中间件。
编辑:最后,这是你最了解的方式。对于像app.listen
回调那样被称为一次的函数,您可以跳过命名它们。它看起来更具可读性。
答案 1 :(得分:0)
功能上没有区别。您可能希望使用匿名函数,因为它们更易于阅读,从而使代码在将来更易于维护。
可以在另一个块或文件中定义回调,但要注意scope。
答案 2 :(得分:0)
利用上述答案,
你可以将它们分开,它仍然可以使用。
如果你在NodeJS上运行最新版本,你可以用更多汁的方式编写上面的代码,如下所示:
var port = process.env.PORT || 8080;
app.listen(port, => console.log('Listenning: ' + port);
);
var onGET = (req, res) => {
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
console.log('User connected: ' + ip);
res.send('OK: ' + req.query.id);
}
app.get('*', onGET);
如果需要更清晰,请删除以下问题。
希望这会有所帮助..