如何在客户端(浏览器)中使用Flux模式?

时间:2015-08-28 19:24:42

标签: asp.net asp.net-mvc reactjs reactjs-flux flux

我正在使用React.js和asp.net mvc 4开发一个网站,我打算使用Flux作为我的前端架构,但我遇到了一些问题,并对使用Flux感到非常困惑:

一开始,我认为Flux在我的网站上将是一个完美的前端架构,但在我阅读了很多关于Flux的文章之后,我发现他们几乎全部使用NodeJ,甚至是facebook团队的演示,这意味着他们都在服务器端执行React.js / Flux代码的渲染工作,对吗?但是我如何在客户端使用Flux,我的意思是在用户的浏览器中?

我很困惑,如果我将react.js / flux视为客户端解决方案,我是错的吗?如果我没有错,但为什么他们都将它们与NodeJs和ES6(如facebook Dispatcher.js)一起使用,那就是好在服务器端,但客户端呢?大多数用户broswers不支持ES6。我尝试使用Babel将Dispatcher.js从ES6转换为ES5,但es5版本有一些错误并且无法正常工作。

我还发现了一些声称支持客户端的Flux工具,比如fluxxor,但在写这篇文章之前我没有机会尝试它,因为我太困惑了。

我希望有人能帮助我弄清楚这些问题。

PS。对不起我的英语,如果你不理解我的话,请告诉我,我会解释。

3 个答案:

答案 0 :(得分:0)

React是一个客户端库。您可以使用虚拟任何后端语言为React App提供服务。很多例子都是节点的原因是因为设置简单快捷。

你应该试试这个教程: https://facebook.github.io/react/docs/getting-started.html

这是非常直接的,并不需要节点。 也许你应该尝试在开始时静态服务React应用程序,以更好地理解React本身。

由于Babel,ES6适用于浏览器。如果您认为Babel有任何问题,您可能需要先使用它的REPL来感受它:https://babeljs.io/repl/

答案 1 :(得分:0)

这个想法是代码可以在客户端和服务器上运行(通用js,以前称为同构javascript(虽然它比使用服务器端渲染等更进一步),

有许多助焊剂实现回流是目前最有希望的,我使用martyjs(但他们停止了开发,它将由alt接管)但是即使对于通量架构,你只需要调度员/事件发射器和一些想法:D,

Shorty说你可以安装npm软件包(flux,react,babel等),但是你需要像http://browserify.org/(with remtify这样的东西或者Webpack,以便在浏览器中运行它们。你不需要在节点js“捆绑后”运行它们,webpack / browserify将捆绑代码,以便它可以在浏览器中独立使用

https://github.com/christianalfoni/flux-react-boilerplate/< - ther是一些样板文件,为如何捆绑代码提供了一些很好的指导。

答案 2 :(得分:0)

我想你想要:

  

$ bower install flux

然后你可以做这样的事情(如果使用require.js):

require(
    ['bower_components/flux/dist/Flux'], 
    function(
        Flux ) 
{

    var dispatcher = new Flux.Dispatcher();

    dispatcher.register(function(payload) { 

        if (payload.actionType='test') {
            console.log('i got a ', payload); 
        }

    });

    dispatcher.dispatch({
        actionType: 'test',
        otherData: { foo: 'bar' }
    });

});

(此答案使用:https://bower.io/https://libraries.io/bower/fluxhttp://requirejs.org/