Tag: 单例

如何在node.js中创build单例模块?

我正在尝试创build一个在networking上做一些工作的模块,同时也caching最近的结果,以减less它访问的资源的利用率。 我的想法是创build一个模块,并在需要的时候需要它。 然而,在较旧版本的节点中,这被明确地说是无效的,因为如果parsing到相同的path,只requirecaching它的参数。 随着更新版本的节点在node-modules下创build扁平结构,我认为这不再是事实。 不过,我仍然看到更多的关于单身人士的文章,这些文章主张用不同的方法创build一个单身人士: 如果你想创build一个像单例一样的东西,你通常可以在模块中做这样的事情: var HelloWorld = (function () { this.greeting = “Hello, World”; return this; })(); module.exports = HelloWorld; 这意味着如果你在应用程序中多次加载模块,即使在不同的文件中,HelloWorld也只会被调用一次。 并且HelloWorld的所有实例都将指向同一个对象。 首先,我不明白为什么这是真的:如果你从两个不同的目录加载这个模块,为什么HellowWorld只能被调用一次? 不会从被加载的模块的每个不同实例调用一次吗? 其次,如果使用足够新的使用平面安装结构的npm版本,甚至有必要这样做?

单例对象与节点中的原型

我遇到下面的代码写在节点,我想了解。 有一个方法process附加到原型以及对象本身。 有什么不同? 我明白这个方法是用来为对象提供单例实例的。 但是,想要进一步解释或参考这是如何工作的。 var singleton; var MyObj = function(opts) {//code} MyObj.prototype = { process: function() {//code} } MyObj.process = function process() { singleton.process(); } MyObj.init = function init(opts) { singleton = new MyObj(opts); } module.exports = MyObj;

如何解决node.js中的模块caching警告(单例问题)?

接下来的另一个问题 ,我明白我面临一个模块caching警告问题 。 很明显,我的项目中创build了几个相同模块的实例。 我需要位于不同文件夹中的其他模块的模块: var mm = require("./myModule.js"); … var mm = require("../myDir/myModule.js"); … var mm = require("../../MyDir/myModule.js"); … 我一直在尝试使用一个对象创build一个myModule (singleton)的独特实例并导出它: var myModule = function() { if (!(this instanceof myModule)) { return new myModule(); } … }; … module.exports = new myModule(); 但是,这并不能解决问题。 什么是在node.js中声明单例的正确方法? 以及如何检索其他模块中的实例?

Singleton结构用于套接字连接

我可以使用Singleton结构套接字连接到我的节点服务器吗? 我只想用一个套接字将所有需要的数据从客户端(网站)传输到服务器(节点服务器)。 可能吗? 如果可能,那么如何?

Node.js中的单例/可重用服务器对象的最佳方法

如果我想在应用程序启动时实例化一个Express服务器,并且稍后引用另一个类中的一些实例化服务器的属性,那么这是一个“好”的方法吗? 看起来像一个单身服务器实例可以工作,但这只是在JS /节点感觉错误。 例如: # app.coffee server = new Server() # server.coffee Http = require 'http' express = require 'express' class Server foos: null constructor: -> @app = express() Http.createServer(@app).listen('1337', 'localhost', cb) cb: -> @foos = ['foo', 'bar'] # another_class.coffee Server = require './server' class AnotherClass constructor: -> # how do I access and do […]

NodeJS – 单身+事件

我将如何inheritanceevents.EventEmitter方法实现单身devise模式的模块? var EventEmitter = require('events').EventEmitter; var Singleton = {}; util.inherits(Singleton, EventEmitter); Singleton.createClient = function(options) { this.url = options.url || null; if(this.url === null) { this.emit('error', 'Invalid url'); } else { this.emit('created', true); } } module.exports = Singleton; 这会导致错误: TypeError: Object #<Object> has no method 'emit'

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

我最近遇到了关于如何在Node.js中编写单例的文章。 我知道require的文档说: 模块在第一次加载后被caching。 多次调用require('foo')可能不会导致模块代码被多次执行。 所以看起来,每个需要的模块都可以很容易地使用一个单例,而不需要单独的样板代码。 题: 上面的文章是否提供了创build单例的解决scheme?