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

时间:2014-11-11 04:19:02

标签: node.js coffeescript singleton

如果我想在应用程序启动时实例化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 something with the instantiated server object in app.coffee

1 个答案:

答案 0 :(得分:1)

为coffeescript定义单例的最佳方法是创建一个可在整个代码中使用的变量。

以下是我编写的示例程序:

class TestHandler
    constuctor: (@elementHandler) ->

    testList: []

    addTest: (test) ->
      @testList.push test

    getTestList: ->
      @testList

    getTestForName: (name) ->
      for e in @getTestList() when e.getName() is name
        return e

    updateTestName: (name, newName) ->
      @getTestForName(name).name = newName

class Test
  constructor: (name) ->
    @name = name

  getName: ->
    @name

testHandler = new TestHandler()
testHandler.addTest new Test 'hi'

如您所见,在class范围之外的变化底部,我创建了一个带有TestHandler新实例的变量。然后,我可以在我的任何类中使用testHandler,它将始终链接到该特定的类。