相关疑难解决方法(0)

nodejs中的单例模式 - 是否需要?

最近,我碰上了这篇文章如何写在Node.js的一个单 我知道require 各州的文件:

模块在第一次加载后进行缓存.多次调用require('foo')可能不会导致模块代码多次执行.

因此,似乎每个必需的模块都可以很容易地用作单例,而不需要单独的样板代码.

题:

上面的文章是否提供了关于创建单例的解决方案?

javascript singleton design-patterns node.js

86
推荐指数
8
解决办法
7万
查看次数

使用RequireJS,如何传递全局对象或单例?

假设我在主页面级别编写代码,并且2个依赖项需要对象的相同实例,并且还将其声明为依赖项.适当的方法是什么?

基本上我想要做的就是说,"如果没有加载这个依赖...然后加载它.否则,使用已加载的同一个实例,然后传递那个."

javascript singleton requirejs

54
推荐指数
3
解决办法
3万
查看次数

将requireJS模块用作单例是不好的做法吗?

我打算使用以下模式来使用基于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)

javascript requirejs

40
推荐指数
2
解决办法
1万
查看次数

将Bunyan应用于大型节点应用程序的推荐方法?

我正在开发一个包含多个模块的节点应用程序.我现在正在尝试正确设置日志记录(应该在开始时这样做),并考虑使用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?

logging node.js bunyan

8
推荐指数
1
解决办法
4076
查看次数