我一直在专注于javascript,尤其是node.js,但在确定回调所需的参数时遇到了麻烦。
例如,通过Express创建路线时,我可以拥有以下内容
app.get('/', function() {
console.log('this is a route');
});
谁会执行而不会给我带来任何麻烦。但是,看过多个示例后,我知道我可能想进一步了解
app.get('/', function(req, res) {
res.render('index');
});
但是在没有看到示例或文档(有时只是几个不清楚的示例)的情况下,是否有一致的方法来确定回调应具有的参数?
我希望我已经清楚了。
答案 0 :(得分:1)
如果没有文档,也没有检查执行回调的函数的来源,您将不会轻易知道。
但是,您可以使用一些探索性代码来拦截它们,然后查看得到的结果:
app.get('/', function() {
console.log(arguments);
});
这里的arguments
关键字是传递给回调函数的参数列表,因此您可以看到所得到的内容。如果它告诉您某物是Express.Request
或某物,则至少可以让您知道尝试在文档中找到什么。
但是在标准javascript之外,使用typescript或flow可以帮助解决此问题,因为它将静态类型添加到javascript中。如果键入了此函数,那么您的编辑器将知道回调函数期望的参数,并可以帮助您填写它们。
答案 1 :(得分:0)
由于您使用的是Express,因此documentation很清楚-它取决于您的路由参数以及是否使用中间件。没有硬性规定,这实际上取决于您的路线功能。
您的第一个示例“有效”是因为您仅打印到控制台,但是没有res
响应对象,您会注意到请求响应什么都没有返回。
分别以req
和res
开头,并根据需要扩展。