更清晰的node.js回调

时间:2017-09-02 08:41:27

标签: node.js express

假设我们正在使用快递。为什么我们使用这样的回调:

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);

3 个答案:

答案 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);

如果需要更清晰,请删除以下问题。

希望这会有所帮助..