更清晰的node.jscallback
假设我们使用快递。 为什么我们使用这样的callback:
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);
这是必须的吗? 还是第二个可以导致问题? 我发现很多人使用内联callback,但为什么不直接在其他块或文件中定义所有的callback? 如果这是必须的,我在哪里可以find所有的最佳做法? 例如,我发现以下链接,但你可以推荐别的吗? 像必须,基本知识等
我find的链接: https : //www.codementor.io/mattgoldspink/nodejs-best-practices-du1086jja
编辑:
这是另一个callback函数作为我正在使用参数的variables:
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);
匿名callback通常在教程和指南中显示,因为初学者更容易理解。 在开发实际的应用程序时,它不起作用。
下面是一个实际路线的例子:
app.get('/user/', User.authenticate, User.getData);
请注意,这种方式很容易理解。 另一种方式只适用于指南和教程,对于实际的应用程序, 使用指定的中间件 。
编辑:最后,这是你最好的理解。 对于像app.listen
callback一样被调用的函数,您可以跳过命名它们。 这看起来更具可读性。
function上没有区别。 您可能想要使用匿名函数,因为它们可以更容易阅读,从而使代码更容易维护。
在另一个块或文件中定义callback是好的,但要注意范围 。
利用上述回应,
你可以让他们分开,它仍然会工作。
如果你在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);
如果需要更清晰的话,请回答以下问题。
希望这可以帮助..
- Nodejs / express,优雅地closures
- 为什么我不能使用来自相关mongo文档的id在GridFS上设置id
- 快速mongo会话存储
- mongoose – 通过标准在子文件中查找
- nodejs http-proxy不转发put请求
- TypeError:无法读取undefined -Express的属性'push'
- node.js + socket.io + redis体系结构 – 水平serverscaling套接字连接?
- unit testingExpress / Mongoose的应用程序路线,而不击中数据库
- passportjs – 来自节点的发布请求不authentication用户