【问题标题】:Node.js server/client module confusion, EventEmitter woesNode.js 服务器/客户端模块混乱,EventEmitter 问题
【发布时间】:2013-04-10 21:53:22
【问题描述】:

我正在尝试编写一个可以在客户端的 Node.js 中使用的库。

我遇到了两个问题:

  1. 我似乎无法正确导出它。我正在使用this docMyClass = exports? and exports or @MyClass = {} 似乎不起作用,所以我现在将文件分开。

  2. 库发出事件;我希望有人能澄清我对如何更简单地做到这一点的困惑。下面跟着我:)

Node.js:

图书馆:

    {EventEmitter} = require 'events'

    class MyClass extends EventEmitter

      emitSomething: (key, data) ->

        @emit key, data

module.exports = MyClass

必填:

MyClass = require 'myclass'
myClass = new MyClass()

myClass.on 'someevent', (data) ->
  console.log data 

# Bare with not using `emit` directly.
data = 
  key: 'value'

myClass.emitSomething 'someevent', data

客户端

EventEmitter 包括在内。

class MyClass extends EventEmitter

  emitSomething: (key, data) ->

    @trigger key, [ data ] # That's stupid.

库文件包含在脚本中,我在某处:

myClass = new MyClass()

myClass.on 'someevent', (data) ->
  console.log data 

data = 
  key: 'value'

myClass.emitSomething 'someevent', data

客户端

Backbone.js/Underscore.js 包括在内(不是上面的 EventEmitter 库)。

class MyClass

  constructor: () ->

    _.extend @, Backbone.Events

  emitSomething: (key, data) ->

    @trigger key, data # Notice the difference.

库文件包含在脚本中,我在某处:

myClass = new MyClass()

myClass.on 'someevent', (data) ->
  console.log data 

data = 
  key: 'value'

myClass.emitSomething 'someevent', data

那么,呃,编写一个为 Node 和浏览器发出事件的库的最佳方法是什么?当我同时包含 EventEmitter 库时,它们似乎与 Backbone 发生冲突(它需要在 Node 上工作,无论是否有 Backbone)。一定有一个更简单的解决方案!

【问题讨论】:

    标签: javascript node.js backbone.js coffeescript eventemitter


    【解决方案1】:

    您应该考虑使用 browserify,因为它包含一个版本的 nodecore 事件,因此您可以简单地使用您的 MyClass 模块客户端。

    所以客户端:

    MyClass = require('./myclass')
    myClass = new MyClass()
    

    http://browserify.org/

    https://github.com/substack/coffeeify

    【讨论】:

    • 这真的很有趣。让我试一试,看看它是否能解决我的问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 2012-02-11
    • 2016-03-30
    • 2011-06-06
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多