假设我在主页面级别编写代码,并且2个依赖项需要对象的相同实例,并且还将其声明为依赖项.适当的方法是什么?
基本上我想要做的就是说,"如果没有加载这个依赖...然后加载它.否则,使用已加载的同一个实例,然后传递那个."
我打算使用以下模式来使用基于requireJS的模块作为单例.请注意,classA返回类型为'classA'的实例,而classB,classC和main的其余类返回模块中类的类型.所有这些都是基于MooTools类的类.
我们的想法是将classA用作全局可用的单例,这些方法只是填充程序.如果这是一个可以接受的模式使用的任何想法?
这会在稍后阶段回来咬我吗?我还没试过在项目上运行r.js,所以我有点担心,并寻找一些建议.
// classA.js
define([], function() {
var classA = new Class({
initialize: function (regionId) {
// perform some Initialization.
this.data = null;
},
doSomething: function(param) {
// some thing.
this.data = param;
}
};
return new classA();
});
// classB.js
define(["classA"], function(classA) {
var classB = new Class({
initialize: function (regionId) {
// perform some Initialization.
},
doSomethingElse: function() {
// some thing.
classA.doSomething("Go back to Work Now!");
}
};
return classB; …
Run Code Online (Sandbox Code Playgroud) 我正在开发一个包含多个模块的节点应用程序.我现在正在尝试正确设置日志记录(应该在开始时这样做),并考虑使用Bunyan.
logger
如本答案所示,拥有一个导出然后由其他模块所需的单个模块或者logger
直接在每个模块中定义一个新的bunyan 实例并相应地配置它会更好吗?为了重复使用,我想象前者,但我不知道这是否会受到限制.
如果我有一个定义的单一记录器
var bunyan = require('bunyan');
var logger = bunyan.createLogger({
name: "filter",
streams: [
{
level: 'info',
stream: process.stdout
},
{
level: 'error',
path: '../error.log'
},
{
level: 'debug',
path: '../debug.log'
}
]
});
module.exports = logger;
Run Code Online (Sandbox Code Playgroud)
然后,使用它的所有模块也将使用名称进行日志记录filter
,而每个模块记录到更能代表自身的名称可能更有意义.
另外,我认为所有模块都应该将错误记录到同一个日志文件中,例如systemErr.log(以便更好地概述),还是应该记录到自己的错误日志,例如module1Err.log,module2Err.log?