2017-09-02 1 views
1

Sagen wir, wir verwenden Express. Warum verwenden wir Rückrufe wie folgt aus:Mehr klare node.js Callbacks

var port = process.env.PORT || 8080; 
app.listen(port, function(){ 
    console.log('Listenning: ' + port); 
}); 

statt dessen:

var port = process.env.PORT || 8080; 
var onBegin = function() { 
    console.log('Listenning: ' + port); 
} 
app.listen(port, onBegin); 

Ist dies ein Muss? Oder der zweite kann Probleme verursachen? Ich sehe, dass viele Leute Inline-Callbacks verwenden, aber warum definieren sie nicht einfach alle Callbacks in einem anderen Block oder einer Datei? Wenn dies ein Muss ist, wo finde ich alle Best Practices? Zum Beispiel habe ich den folgenden Link gefunden, aber können Sie vielleicht etwas anderes empfehlen? Wie Moste, Grundlagen und etc.

Der Link habe ich gefunden: https://www.codementor.io/mattgoldspink/nodejs-best-practices-du1086jja

EDIT:

Hier ist die andere Callback-Funktion als eine Variable i mit Parametern bin mit:

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

Antwort

0

Es gibt keinen funktionalen Unterschied. Möglicherweise möchten Sie anonyme Funktionen verwenden, da sie einfacher zu lesen sind, wodurch der Code in Zukunft einfacher zu verwalten ist.

Es ist in Ordnung, Ihre Rückrufe in einem anderen Block oder einer Datei zu definieren, aber behalten Sie die scope im Auge.

1

Anonyme Rückrufe werden häufig in Lernprogrammen und Anleitungen angezeigt, da sie für Anfänger einfacher zu verstehen sind. Beim Entwickeln einer tatsächlichen Anwendung funktioniert es nicht.

Hier ist ein Beispiel einer tatsächlichen Route:

app.get('/user/', User.authenticate, User.getData); 

Hinweis, wie einfach es auf diese Weise zu verstehen ist. Der andere Weg funktioniert nur in Anleitungen und Tutorials, für die eigentliche Anwendung, verwenden Sie Namen Middlewares.


EDIT: Am Ende ist es, wie Sie am besten verstehen. Für Funktionen, die einmalig wie der Rückruf app.listen aufgerufen werden, können Sie die Benennung überspringen. Es sieht auf diese Weise besser lesbar aus.

0

auf den Antworten über Nutzung,

Sie sie haben getrennt es noch funktioniert.

In einer saftigen Art und Weise, wenn Sie auf neueste Version auf NodeJS laufen Sie den obigen Code wie unten schreiben:

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

Wenn es für mehr Klarheit benötigen wird, fällt unter den Fragen.

Hoffe, dass dies hilft ..