在没有 NodeJs EventEmitter 的情况下构建 Flux/React 应用程序
Building Flux/React application without NodeJs EventEmitter
您好,我正在尝试构建一个带有 go-lang 后端的 Flux/React 应用程序。我一直在关注我发现的教程 here。但是我在建立商店时遇到了问题。在本教程中,类似这样的内容用于为商店创建基础。
var ProductStore = _.extend({}, EventEmitter.prototype, {...});
我遇到的问题是我无法访问 EventEmitter 库,据我所知这是一个 Nodejs 库?我可以使用替代方案吗?
您可以在浏览器中使用 NodeJS 库了!看看browserify.
首先是一些代码:
// index.js
var EventEmitter = require("events").EventEmitter;
var ProductStore = function() {};
ProductStore.prototype = new EventEmitter;
然后你 运行 browserify 就可以了:
browserify index.js > bundle.js
同样值得一看的是 WebPack,它做同样的事情。 (但有一些附加功能)
好吧,如果您正在使用 Facebook (https://github.com/facebook/flux) 提供的 flux 实现,您实际上可以 扩展他们的 FluxStore class,它带有一个构建在事件发射器中。
如果你想这样做,唯一的事情就是你必须使用 es6 classes(并使用 babel 转换为 es5)。
它的好处是你不必实现 addListener
removeListener
和 emitChange
方法,这非常 DRY :)
有了这个解决方案,您的商店最终会变成这样:
var FluxStore = require("flux/utils").Store,
thing;
class ThingStore extends FluxStore {
getThing() {
return thing;
}
__onDispatch(payload) {
//your code
}
}
您好,我正在尝试构建一个带有 go-lang 后端的 Flux/React 应用程序。我一直在关注我发现的教程 here。但是我在建立商店时遇到了问题。在本教程中,类似这样的内容用于为商店创建基础。
var ProductStore = _.extend({}, EventEmitter.prototype, {...});
我遇到的问题是我无法访问 EventEmitter 库,据我所知这是一个 Nodejs 库?我可以使用替代方案吗?
您可以在浏览器中使用 NodeJS 库了!看看browserify.
首先是一些代码:
// index.js
var EventEmitter = require("events").EventEmitter;
var ProductStore = function() {};
ProductStore.prototype = new EventEmitter;
然后你 运行 browserify 就可以了:
browserify index.js > bundle.js
同样值得一看的是 WebPack,它做同样的事情。 (但有一些附加功能)
好吧,如果您正在使用 Facebook (https://github.com/facebook/flux) 提供的 flux 实现,您实际上可以 扩展他们的 FluxStore class,它带有一个构建在事件发射器中。
如果你想这样做,唯一的事情就是你必须使用 es6 classes(并使用 babel 转换为 es5)。
它的好处是你不必实现 addListener
removeListener
和 emitChange
方法,这非常 DRY :)
有了这个解决方案,您的商店最终会变成这样:
var FluxStore = require("flux/utils").Store,
thing;
class ThingStore extends FluxStore {
getThing() {
return thing;
}
__onDispatch(payload) {
//your code
}
}