模块化模块?需要父模块中的部分
Modular Module? Require parts of module in parent
编写一个节点.js模块,并希望尝试分解我的代码/保持整洁。
从本质上讲,我想要的是为模块的每个部分(身份验证、用户等)提供一个单独的文件/文件夹,并要求它们都来自父包,然后父包将被公开。
例如,文件结构为:
index.js
auth.js
users.js
在index.js
内部,有:
module.exports = {
some_variable : 1,
authentication_variable : '',
auth : require('./auth'),
users : require('./users')
}
然后,我希望some_variable
可以从每个包中访问,并且users
能够引用auth
,反之亦然,并通过auth
设置authentication_variable
。
从本质上讲,我希望它们在一个类中,但由于它将在 Express 应用程序中的多个路由中使用,我希望它保留主文件中需要时的变量/状态。
如果我将其全部保存在同一个文件中,我可以做到这一点,但不太确定如何做到这一点,因为当我需要该文件时,它无法访问其父级的范围。
到目前为止,作为MWE,我所拥有的:
module.exports = x = {
globals : {
id : 123456
},
auth : {
setId : function(id){
x.globals.id = id;
},
getAuthToken : function(){
return x.globals.id;
}
},
users : {
doThing : function(name, id){
x.auth.setId(id);
console.log(x.auth.getAuthToken === id); // true
}
}
}
我已经尝试了下面的建议,但它不起作用。 我不能在另一个模块中拥有仍然可以访问最大范围的子函数。
理想情况下,我想要一种方法,全部放在一个包里,test-package
:
index.js
module.exports = {
test : function(){
console.log(this); // shows this entire object {test : function, auth: function}
},
auth : require('./auth')
}
auth.js
module.exports = {
check : function(){
console.log(this); // shows {test : function, auth : function}
}
}
然后,在一个单独的项目中
var my_mod = require('test-package');
my_mod.test(); // shows as before
my_mod.auth.check(); // shows same
如果这是不可能的,至少有一种从auth.js
内部访问整个index.js
模块的方法。
您可以使用
this
关键字:
索引.js:
require('./module').auth();
模块.js:
module.exports = {
some_var: 1,
auth: require('./auth'),
user: require('./user')
}
身份验证.js:
module.exports = function() {
console.log(this);
this.some_var = 10;
this.user();
}
用户.js:
module.exports = function() {
console.log(this);
}
相关文章:
- 聚合物是一个框架而不是一个库.如何模块化地使用web组件
- 使用Ampersand.js路由模块化应用程序
- Angular重命名模块后未能实例化模块
- 性能与模块化:将JS集成到PHP或单独的custom.JS中
- 将broccoliJS与当前使用requireJS的模块化主干应用程序结合使用,我想完全放弃requireJS
- 用于多个选项卡和模块化的knockoutjs设计模式
- 编写在浏览器和node.js中运行的模块化ECMAScript
- AngularJS出错-无法实例化模块
- 模块化&重用使用ExtJS编写的代码
- 使用模块化CSS与Bootstrap 4和React
- 未捕获错误:由于,[$injector:moduler]未能实例化模块polmgr
- 构建模块化谷歌地图应用程序
- 模块化模块?需要父模块中的部分
- 为什么模块化幂函数在 Python 和 Javascript 中对于大数字的工作方式不同
- 模块化与性能与性能与角度应用程序中的ng-include
- 将变量传递给 Javascript 模块化模式方法
- 添加角光栅时模块实例化失败
- ES6模块初始化顺序错误
- 控制javascript模块初始化(dropzone)
- 从多个模块初始化Node.js数据库