同构反应+ Flux + REST API

时间:2015-05-21 19:49:33

标签: reactjs reactjs-flux flux isomorphic-javascript fluxible

所以,我最近一直是小提琴:最近有一些同构的React + Flux并且发现一些概念让人很困惑。我一直在研究如何构建同构应用程序的最佳实践,并正在寻求建议。

假设您正在创建一个Web应用程序以及由相同REST API支持的移动应用程序。您是否将REST API与webapp捆绑在一起?我见过人们提倡捆绑并为REST API提供单独的代码库。

感谢任何建议或建议阅读!

4 个答案:

答案 0 :(得分:4)

Fluxible(至少来自示例)确实提倡使用应用程序内部的服务层直接从服务器调用它,并通过客户端的xhr调用它而无需复制代码 https://github.com/gpbl/isomorphic500/blob/master/src/app.js 这是我在构建同构应用程序时虔诚地遵循的一个例子

答案 1 :(得分:1)

这个想法非常简单。让我们假设您有SPA和后端,它提供REST API。

SPA (in browser) <====> Backend REST API

在同构的情况下,它是完全相同的,除了你也将在服务器上运行你的SPA。

所以,它会像那样工作:

SPA (in browser) <====> Backend REST API
SPA (on server)  <====> Backend REST API

如果您有移动应用,那么它将是:

SPA (in browser) <====> Backend REST API
SPA (on server)  <====> Backend REST API
Mobile app       <====> Backend REST API

这是我们向社区开放的真正的同构制作应用程序 - https://github.com/WebbyLab/itsquiz-wall。你可以克隆它并运行。

Here is my post详细介绍了应用背后的所有想法。

答案 2 :(得分:0)

让我们看看我是否可以帮助你。

请记住,Isomorphic Javascript很新,很难找到每个用例的明确定义。

根据定义,如果您创建RESTful应用程序,则应该在服务器和客户端之间进行明确分离:

  

“统一的界面将客户端与服务器分开。这种分离   关注意味着,例如,客户不关心   数据存储,它保留在每个服务器的内部,以便   客户端代码的可移植性得到改善。服务器不关心   用户界面或用户状态,以便服务器可以更简单   更具可扩展性服务器和客户端也可以被替换和开发   只要它们之间的界面没有改变就可以独立地进行。“

关于 isomorphic 应用程序,主要好处是:

  • 用户首次进入网站时没有空白页面(UX点)
  • 因此它是SEO友好
  • 您可以在服务器/客户端之间共享一个逻辑(例如关于React组件)

这意味着您应该在用户首次输入网址时,将呈现的React组件从服务器传送到客户端。之后,您将像往常一样继续使用REST API,在客户端上呈现所有内容。

如果可以,请分享有关您案件的更多详情,这将更容易帮助。

答案 3 :(得分:0)

I wouldn't recommend you to bundle the REST API in the browser, as you are limited to using browser-compatible modules in your API, and you won't be able to make any direct database calls.

There's a library that makes it so you can build your APIs in an isomorphic fashion, and re-use it in the client and server without bloating or breaking the bundle. This is what we're currently using in a big single-page application.

It's called Isomorphine, and you can find it here: https://github.com/d-oliveros/isomorphine.

Disclaimer: I'm the author of this library.