2014-01-31 142 views
0

当我需要一个Express项目的app.js文件中的模块时,是否可以从其他模块访问这些模块?听起来有点混乱,让我举一个例子:NodeJs/Express和模块范围

在我app.js我有以下几点:

var iniparser = require('iniparser'); 
var config = iniparser.parseSync('./config.ini'); 

的正常工作,如果app.js文件中使用config.port。但是当试图从routes.js文件访问config时,它不可用。

所以我的问题是,范围限于其他模块包含在模块/文件?如果我想解析config.ini,我是否必须将模块包含在任何模块/文件中,我打算使用'iniparser'模块。

我希望我没有困惑任何人。

回答

1

var xxx = yyy; 

声明的变量的范围仅限于该模块/文件,其中它被声明(或其中声明它的功能,如果是一个函数内声明。)

就你而言,你必须在你需要它的每个文件/模块中添加两行。

作为一种优化,并避免解析配置文件几次,你可以有一个config.js文件

var iniparser = require('iniparser'); 
module.exports = iniparser.parseSync('./config.ini'); // executed only once 

,然后要求你的配置在它所需的所有文件/模块

var config = require('./config'); 
console.log(config.port); 
+0

好点!谢谢。 – Torra