var express = require('express');
var app = express();
我们就是这样创建一个快速应用程序的。但这是什么“快递()”?它是一个方法还是一个构造函数?它是从哪里来的??
发布于 2016-07-25 08:19:42
您将使用Node的require函数来使用express模块。要求类似于关键字,如导入或包含在其他语言中。require将包的名称作为字符串参数并返回包。返回的对象没有什么特别之处--它通常是一个对象,但它可以是一个函数、一个字符串或一个数字。
var express = require('express');
=>需要Express模块,就像您需要其他模块一样,并将其放入变量中。
var app = express();
=>调用express函数" Express ()“,并将新的Express应用程序放入app变量(以启动新的Express应用程序)。就像在创建类的对象一样。其中"express()“就像类,app是新创建的对象。
通过查看下面的特快专递代码,你就能很好地了解里面正在发生的事情。
文件1: index.js
'use strict';
module.exports = require('./lib/express');
文件2:lib/press.js
'use strict';
var EventEmitter = require('events').EventEmitter;
var mixin = require('merge-descriptors');
var proto = require('./application');
var Route = require('./router/route');
var Router = require('./router');
var req = require('./request');
var res = require('./response');
/**
* Expose `createApplication()`.
*/
exports = module.exports = createApplication;
function createApplication() {
var app = function(req, res, next) {
app.handle(req, res, next);
};
mixin(app, EventEmitter.prototype, false);
mixin(app, proto, false);
app.request = { __proto__: req, app: app };
app.response = { __proto__: res, app: app };
app.init();
return app;
}
exports.application = proto;
exports.request = req;
exports.response = res;
exports.Route = Route;
exports.Router = Router;
});
如何要求工作
当您在节点中调用require('some_module')时,会发生以下情况:
这个循环一直重复,直到节点到达文件系统的根文件夹,这时它将检查任何全局模块文件夹(例如/usr/local/ node _node,在Mac上),如果它仍然找不到some_module,它将抛出一个异常。
发布于 2018-07-13 18:18:21
古老的柱子。我认为最初的招贴画搞不清楚为什么调用模块表达式导出的函数的语法是
var app = express()
而不是
var app = express.express()
要澄清的是: require()函数不创建对该“模块”的引用。没有引用模块这样的东西。只有对模块导出的东西的引用。
xxx.js (‘.js’),其中可以省略.js扩展名,返回由该xxx.js文件导出的任何内容。如果该xxx.js文件导出一个对象,则require('xxx.js')返回一个对象;如果导出一个函数,require('xxx.js')返回一个函数;如果导出一个字符串,require('xxx.js')返回一个字符串.
如果您检查文件express.js的源代码,您将看到它导出了一个函数。所以在
var express = require('express')
第一个表达式被分配给模块express导出的任何东西,在这种情况下,模块表达式恰好是一个函数。表达式是一个函数,而不是一个模块的引用。因此,在第二行,您只需调用该函数:
var app = express()
希望这能有所帮助!
发布于 2018-09-02 14:00:11
让我举个例子来回答这个问题。创建2个javascript文件。play1.js和express.js
//express.js
function createApplication(){
var app = 'app';
return app;
}
module.exports = createApplication;
//keep in mind that we are not doing module.exports = {createApplication}
现在在play1.js文件中导入express.js
//play1.js
var express = require('./express);
var app = express();
// this will call createApplication function as app is referencing to it.
console.log(app); // "app"
https://stackoverflow.com/questions/27599614
复制相似问题