Javascript 带有require的双参数:var io=require(';socket.io';)(http);
我是node和JS的新手,一直在研究socket.io聊天示例()。我在服务器中遇到以下代码:Javascript 带有require的双参数:var io=require(';socket.io';)(http);,javascript,node.js,socket.io,requirejs,Javascript,Node.js,Socket.io,Requirejs,我是node和JS的新手,一直在研究socket.io聊天示例()。我在服务器中遇到以下代码: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); 我看过其他教程,以前从未见过require后面的双括号。(http)部分做什么?它是require的一个参数,是改变了类型还是其他什么 谢谢 Nodejs允许您使用语句module.e
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
我看过其他教程,以前从未见过require后面的双括号。(http)
部分做什么?它是require的一个参数,是改变了类型还是其他什么
谢谢 Nodejs允许您使用语句
module.exports=something
将对象/函数分配给导出的模块。因此,这些语句中的每一条都在导入一个库,然后运行分配给导出内容的函数
例如,是express的源代码,它们在其中导出createApplication
函数
如果你有一个库
http
,并且它有一个导出的模块服务器
,那么就可以展开
假设我们把这条线分开:
var http = require('http').Server(app);
分为两行:
上面的不同之处在于,它们不是两个步骤,而是将其压缩为一个步骤,这样http中就有了服务器模块,而不是整个http库。如果您只想使用http库的特定部分,这可能非常有用。在JavaScript中,函数是最重要的。这意味着它可以由另一个函数返回 考虑以下简单示例来理解这一点:
var sum = function(a) {
return function(b) {
return a + b;
}
}
sum(3)(2); //5
//...or...
var func = sum(3);
func(2); //5
在您的示例中,
require('socket.io')
返回另一个函数,该函数将以http
对象作为参数立即调用。非常好,谢谢。知道真正的名字也很有帮助。