我从其他开发人员那里获得了一个项目,使用典型的MEAN堆栈,其入口点为server.js。
现在,在server.js中,执行以下操作的模块:
var express = require('express');
var app = express();
var passport = require('passport');
还有另外两行代码看起来像是在进行某种路由,但我无法弄清楚它实际意味着什么:
require('./routes.js')(app, passport);
require('./apiRequest/authenticate')(app, passport);
我感到困惑,因为看起来require()
从全局范围调用,而所有其他路由方法都被称为app,即app.use()
。有人可以解释这些参数集的含义,以及为什么有两个集合也在require()
调用,是否由Express提供?
答案 0 :(得分:0)
routes.js
和apiRequest/authenticate
是两个本地(项目)模块/ js文件,基本上是必需的。
express
和passport
是npm_modules提供的节点模块/库,通过节点模块解析。
app
只是通过调用express模块/默认函数创建的快速实例。
传递给所需本地模块(路由和身份验证)的参数只是传递给那些模块的参数(默认导出函数),可以在这些文件中进一步使用(例如,如果你查看routes.js,你可能会看到他们使用app.use(...
,其中app作为param以及护照模块提供)
更清楚地解释语法require('./routes.js')(app, passport);
:
require
- 用于将模块导入当前文件/模块的节点OOB功能require('./routes.js')
解析routes.js文件的默认导出,在这种情况下是一个函数...(app, passport)
然后使用提供的参数调用此函数(从上面开始)(此处先前已定义 - 即使用require导入)