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

我遇到两个问题:

  1. 我似乎无法正确导出它。 我正在使用这个文档 MyClass = exports? and exports or @MyClass = {} MyClass = 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)。 必须有一个更简单的解决方案!

===============>>#1 票数:2 已采纳

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

客户端:

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

http://browserify.org/

https://github.com/substack/coffeeify

  ask by translate from so

未解决问题?本站智能推荐: