我在快递框架上很陌生。
我抬头看了一下Socket.io网站的快速入门,我在“使用Express 3 web框架”中看到了这个声明。并在代码片段的这一行
var app = require('express')()
第二个括号用于什么?
先谢谢
答案 0 :(得分:5)
当你说
时require('express')
它是this file,它被执行并导出createApplication
函数。您可以像这样检查
console.log(require('express'));
// { [Function: createApplication]
// mime:
// ...
console.log(typeof require('express'));
// function
它基本上是一个增加了其他数据的函数(由于函数是第一类对象,因此可以在JavaScript中使用)。因为require('express')
实际上是一个函数,所以第二个()
意味着我们正在调用该函数。
如果您想了解module.exports
和exports
的工作原理,请查看blog entry of mine
答案 1 :(得分:1)
Thefourtheye回答了你的问题,但这是一个简单的例子,说明正在发生的事情。
首先创建一个带有一个函数的文件x.js,如下所示。
// x.js
exports.x = function() {
return "hello";
}
然后在另一个文件中要求此文件。
// main.js
var x = require('./x.js'); // x is reference to the function
var text = x(); // execute the function (text will be "hello")
替代方案,你可以写
// main.js
var text = require('./x.js')(); // You are executing the function immediately