将app = express()传递给另一个模块是否与请求该模块相同?
is passing app = express() into another module the same as requiring the module?
我想知道传递app = express()到另一个模块与在该模块内要求express之间的区别是什么。
如果我像这样传递app = express()
var app = require('express');
app.locals.title = title;
require('somemodule')(app);
then in somemodule;
exports = function(app) {
console.log(app.locals.title);
}
如果你需要在另一个模块中再次使用express,那么你是否能够使用核心文件中设置的app.locals变量呢?
var app = require(express);
console.log(app.locals.title);
如果没有,你必须在这个模块中重新定义app.locals吗?
首先,我假设您正在使用Express 4x。在4x中,模块实际上导出了一个函数,因此在需要模块之后,您需要首先创建应用程序。像这样:
var express = require('express');
var app = express();
如果模块做了一些事情,比如添加中间件,或者添加功能到你在你的项目中创建的app
,那么它只会工作,如果你先创建应用程序,然后将其传递到模块。见下文:
var express = require('express);
var app = express();
require('middleware-adder')(app);
// app now has the middeware provided by my module.
在将其传递到您需要的模块(如示例中的app.locals.title
)之前在应用程序上设置的任何内容,确实可以在模块内部访问。作为模块的作者,您需要特别确定消费者传递的是您所期望的内容!
相关文章:
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- AMD格式是否要求模块为单件
- Javascript中的模块模式和揭示模块模式是否仅在创建API时有用;s
- 将事件发送到javascript文档的react本机模块是否正确
- 是否可以从javascript文件中将量角器作为模块运行
- Javascript:导入模块是否会更改其中字符串的编码
- 检查node.js模块是否可用
- 检查AngularJS模块是否已启动
- 节点 JS Express 模块是否异步处理请求
- Nodejs 模块是否可以在不同的 Linux 发行版上移植?
- Node 的断言模块是否提供了一种在没有强制的情况下执行深度相等检查的方法?
- Node 的加密模块是否阻止,即使对于未定义为同步的方法也是如此
- 模块是否应该在express.js的所有路由中使用app.use进行配置
- Native Client模块是否可以呈现由C++代码生成的HTML
- require.js模块是否可以依赖于它自己
- AngularJS使用NG-IF检查模块是否存在
- Javascript (ES6)模块:是否可以导出具有动态名称的变量
- 在组织AngularJS应用时,你的模块是否都有相同的名称?
- 我应该测试一个模块是否有一些属性
- 将app = express()传递给另一个模块是否与请求该模块相同?