我的服务器端是rails,我使用带有服务器端渲染的react-rails (prerender: true)。最近开始使用react-router-relay和react-router- relay,但是服务器端渲染不再可能,因为显然获取数据涉及到与graphql服务器的通信,这涉及超时等,这在服务器渲染时是不可用的。因此,我猜一定有一种方法可以将数据预先注入到服务器端的中继存储中,以避免调用graphql。我找到了这个库:https://github.com/denvned/isomorphic-relay-router,但我不能使用它,因为它与react-rails的使用不兼容(例如,我的应用程序中没有app.get,所以没有地方使用这里提到的匹配函数)。你有什么办法让它工作吗?
发布于 2016-02-12 00:00:19
我们遇到了类似的问题。查看我们的实现,看看我们是如何让它与rails一起工作的。尽管我不建议你这么做...
看看这个:https://github.com/brandfolder/rails-graphql-relay
更新:
我们遇到了很多关于ruby的阻塞特性的问题。为了解决这个问题,我们不得不共同制定一个解决方案,在这个解决方案中,我们将node作为我们应用程序的一部分。
我们所做的是构建3个应用程序:
1)符合JSONAPI的公共API,封装了我们所有的业务逻辑。基于https://github.com/brandfolder/jsonapionify构建的https://api.brandfolder.com/v2/docs
2)一个与我们的JSON API对话的GraphQL服务器。注意:我强烈推荐express-graphql (node)。由于node的异步/非阻塞特性,express-graphql能够一次对我们的API进行多个调用,而不是在ruby中阻塞。https://github.com/brandfolder/graphqlify
3)为我们的React/Relay应用程序提供服务的应用程序。这只是一个带有browserify的资产管道,用于提供我们的react代码。它还包含使用ReactDOMServer处理服务器端渲染的代码。私有存储库
这可能是一个比您正在寻找的更复杂的示例,但它允许使用来运行高度可用的高性能生产应用程序。在您的情况下,您可以轻松地通过两个应用程序,GraphQL服务器和前端代码。这将允许前端进行编译,而不必担心ruby中的后端阻塞GraphQL服务器。
https://stackoverflow.com/questions/34649613
复制相似问题