//Trying to convert zis javascript...
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
//To zis coffee-script
http.createServer(app).listen app.get('port'), (x) ->
console.log "Express server listening on port " + app.get 'port'
我的问题是:当我提供app.get('port')的值作为“listen”的第一个参数时,是否必须使用括号 如果我在不使用括号的情况下编写代码段:
http.createServer(app).listen app.get'port' (x) ->
console.log "Express server listening on port " + app.get 'port'
不会将回调函数作为第二个参数传递给app.get?
答案 0 :(得分:2)
简而言之,转换看起来像这样:
http.createServer(app).listen app.get('port'), ->
console.log "Express server listening on port #{app.get 'port'}"
更多解释:
除非函数不带参数,否则CoffeeScript的括号是可选的。因此,如果您正在调用带有两个参数的函数,则以下两个是等效的:
Math.max(5, 12)
Math.max 5, 12
与Math.max
一样,http.createServer(app).listen
似乎有两个参数:一个端口(似乎)和一个回调函数。
你可以像这样轻松地写出来,这可能会更清楚。
serverListeningCallback = ->
console.log "Express server listening on port #{app.get 'port'}"
http.createServer(app).listen app.get('port'), serverListeningCallback
我建议在顶部使用解决方案,但上述方法可能会使解决方案更加清晰。
PS:注意CoffeeScript's string interpolation。以下内容在CoffeeScript中是等效的:
"My favorite number is " + Math.random()
"My favorite number is #{Math.random}"