【发布时间】:2013-04-10 21:53:22
【问题描述】:
我正在尝试编写一个可以在客户端的 Node.js 或中使用的库。
我遇到了两个问题:
我似乎无法正确导出它。我正在使用this doc。
MyClass = exports? and exports or @MyClass = {}似乎不起作用,所以我现在将文件分开。库发出事件;我希望有人能澄清我对如何更简单地做到这一点的困惑。下面跟着我:)
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