express() 函数在 expressJS 中使用,它是一个全局函数吗?

3

第二个语句中使用的 express() 函数是全局函数吗?我在项目文件夹中找不到它的声明。

var express = require('express');
var app = express();
var fs = require("fs");

1
它不是全局的 - 你需要在第一行从express包中导入到本地作用域中。 - Joe Clay
在 https://expressjs.com 库中定义了 express 函数。 - Arif Khan
2个回答

6

以下是您正在执行的操作:

// creating a variable named express and storing return value of require function
// require is a nodejs function, in this case it is called with parameter called express which loads express module
var express = require('express');

// Executing the function stored in express variable
// And storing the result into app variable 
var app = express();

所以,express 是在第一行声明的。代码 var express = require('express') 只是一种约定俗成的写法,你可以使用任何有效的变量名。以下写法也同样适用:
var expServer = require('express');
var app = expServer();

如果两个文件都想要引用 express 并初始化一个 app 变量,它们应该都调用 express() 吗?还是只有一个文件调用 express() 并将结果作为全局变量共享? - Jamie Birch
它应该被导入到一个文件中,然后作为全局变量导出,并将在<server>.js文件中使用,在那里你将用app.listen(<port>)初始化服务器。由于一个express()实例将用于配置整个应用程序,使用另一个实例将导致两个express配置,其中任何一个都将覆盖另一个,或者某些在文件中定义的配置将不会出现在应用程序中。 - Abhishek Singh
你会将它作为全局变量暴露出来吗?服务器只有一个入口,即基础部分,节点直接调用它。是的,你可以将其公开并导入到另一个模块中进行调用,在这种情况下将创建服务器的另一个实例。 - snnsnn
谢谢@SnnSnn,这对我来说有点棘手。所以express.js导出一个函数,对吧? - Anil GR
1
没问题。是的,这些都是开源项目,你可以随时检查源代码:https://github.com/expressjs/express/blob/master/lib/express.js可以看到它将createApplication函数作为默认导出。默认意味着你在导入时可以给它取任何名字。 - snnsnn

0

Express是一个npm模块,您需要导入它才能使用它,就像其他npm包一样。

我在哪里可以找到它的声明?我在我的项目文件夹中找不到它。

它的声明在node_modules目录中,您不必对其进行任何操作。

这是使用express并从中创建服务器的示例。

var express = require('express');
var app = express();

app.get('/', function(req, res){
   res.send("Hello world!");
});

app.listen(3000);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接