如何在Node中的两个文件之间共享模块私有数据
How can I share module-private data between 2 files in Node?
我想要一个Node.js模块,它是一个包含多个文件的目录。我希望一个文件中的一些var可以从另一个文件访问,但不能从模块外部的文件访问。有可能吗?
因此,让我们假设以下文件结构
` module/
| index.js
| extra.js
` additional.js
在index.js
:中
var foo = 'some value';
...
// make additional and extra available for the external code
module.exports.additional = require('./additional.js');
module.exports.extra = require('./extra.js');
在extra.js
:中
// some magic here
var bar = foo; // where foo is foo from index.js
在additional.js
:中
// some magic here
var qux = foo; // here foo is foo from index.js as well
Additional和Extra正在实现一些业务逻辑(彼此独立),但需要共享一些不应导出的模块内部服务数据。
我看到的唯一解决方案是从additional.js
和extra.js
中再创建一个文件service.js
和require
。这是正确的吗?还有其他解决方案吗?
你能把想要的东西传进来吗?
//index.js:
var foo = 'some value';
module.exports.additional = require('./additional.js')(foo);
module.exports.extra = require('./extra.js')(foo);
//extra.js:
module.exports = function(foo){
var extra = {};
// some magic here
var bar = foo; // where foo is foo from index.js
extra.baz = function(req, res, next){};
return extra;
};
//additional.js:
module.exports = function(foo){
var additonal = {};
additional.deadbeef = function(req, res, next){
var qux = foo; // here foo is foo from index.js as well
res.send(200, qux);
};
return additional;
};
好的,您可以使用"全局"名称空间:
//index.js
global.foo = "some value";
然后
//extra.js
var bar = global.foo;
我希望一个文件中的一些变量可以从另一个文件访问,但不能从模块外部的文件访问
是的,这是可能的。您可以将另一个文件加载到您的模块中,并将其交给一个特权函数,该函数提供对模块范围内特定变量的访问权限,也可以将其本身交给值:
index.js:
var foo = 'some value';
module.exports.additional = require('./additional.js')(foo);
module.exports.extra = require('./extra.js')(foo);
extra.js:
module.exports = function(foo){
// some magic here
var bar = foo; // foo is the foo from index.js
// instead of assigning the magic to exports, return it
};
additional.js:
module.exports = function(foo){
// some magic here
var qux = foo; // foo is the foo from index.js again
// instead of assigning the magic to exports, return it
};
相关文章:
- 如何使用Node.js在JavaScript模块文件之间使用事件处理程序
- 是否可以缓存可下载的文件,并在XHR和非XHR请求之间共享该缓存
- 我如何知道js文件之间的javascript应用程序代码流
- 为什么当我在带有锚点的页面之间移动时,Rails不重新加载我的javascript文件
- 什么's使用脚本标记调用文件和ajax之间的区别
- Chrome审核:在外部CSS文件之间的头中发现了1个内联脚本块&”;
- 如何在Famo.us中的两个视图(不同的js文件)之间进行通信
- 如何将json文件中的数据提取到对象数组中,并在两个控制器之间共享
- 关于node.js/javascript在文件之间共享变量
- 我可以在两个javascript文件之间传递一个字符串吗?
- 使用 JQuery 读取二进制文件的浏览器之间的不同行为
- 什么's是处理多个js文件之间交互的简单方法,同时避免溢出全局变量
- 如何使用WebRTC在两个浏览器之间传输文件
- 文件之间的Javascript变量
- MVC视图文件_Layout.cshtml中头部和主体的Render Bundles之间的差异
- 共享'这'文件之间
- 节点模块和常规javascript文件之间的区别是什么
- 在2js文件之间共享值
- 模块化nodejs中文件之间的函数
- 通过socket在android和nosejs之间发送文件