在没有NodeJs EventEmitter的情况下构建Flux / React应用程序

时间:2015-05-05 21:04:03

标签: javascript node.js go reactjs flux

您好我正在尝试使用go-lang后端构建Flux / React应用程序。我一直在按照我发现here的教程。但是我在建立商店时遇到了问题。在教程中,这样的东西用于为商店创建一个基础。

var ProductStore = _.extend({}, EventEmitter.prototype, {...});

我遇到的问题是我无法访问EventEmitter库,我理解它是一个Nodejs库?有没有我可以使用的替代方案?

2 个答案:

答案 0 :(得分:8)

您可以在浏览器中使用NodeJS库!看看browserify

首先是一些代码:

// index.js
var EventEmitter = require("events").EventEmitter;
var ProductStore = function() {};
ProductStore.prototype = new EventEmitter;

然后你运行browserify:

browserify index.js > bundle.js

同样值得一看的是WebPack,它做同样的事情。 (但有一些额外的功能)

答案 1 :(得分:2)

好吧,如果你正在使用Facebook(https://github.com/facebook/flux)给出的flux实现,你实际上可以扩展他们的FluxStore类,这是在eventEmitter中构建的。

唯一要做的就是你必须使用es6类(并使用babel转换为es5)。

关于它的好处是您不必实施addListener removeListeneremitChange方法,而且非常DRY:)

使用此解决方案,您的商店最终会看起来像这样:

var FluxStore = require("flux/utils").Store,
    thing;

class ThingStore extends FluxStore {
    getThing() { 
        return thing;
    }

    __onDispatch(payload) {
       //your code
    }
}