1

我一直在研究 react/flux/react-router 以及如何在服务器中预渲染虚拟 DOM。在服务器中调用Router.run()andrenderToString将负责在服务器中预渲染页面并延迟加载和下载其余的 .js 文件到客户端。React-router在任何场景(客户端或服务器)中处理UI URL 。这不一定与服务器的REST API URL相同。

如果我想将后端用于具有 REST 功能的本机应用程序,添加路由功能的最佳做法是什么。我是否应该为 express.js 提供一套完整的路由定义并重新定义 react-routes 中的所有路由?

React 路由不一定类似于 express 路由(可以有或多或少的路由模式)。所以复制路由定义似乎是不可避免的。那是对的吗?即使这个例子似乎也在做同样的事情。

我希望找到一种方法来重用路由定义或更干燥的东西。

4

2 回答 2

1

您不想在客户端和服务器上复制路由。查看来自 Yahoo 的通量示例:https ://github.com/yahoo/flux-examples/tree/master/react-router

然后,只需在服务器上的 react 路由器之前指定 API 请求。例如:

var express = require('express');
var server = express();

// Static files
server.use('/assets', express.static('src/assets'));
server.use('/build', express.static('build'));

// Declare API handling:
require('apiRouting')(server);

// Decalre react-router handling
require('./routing.jsx')(server);

// In the apiRouting.js:
module.exports = function (server) {
    server.get('/api/methodA', function (req, res) {
        // body...
    });
    server.get('/api/methodB', function (req, res) {
        // body...
    });
};
于 2015-05-18T00:08:55.147 回答
0

此外,还有一个库,因此您可以以同构方式构建您的 API,并在客户端和服务器中重新使用它,而不会膨胀或破坏捆绑包。这是我们目前在大型单页应用程序中使用的。

它叫做异吗啡,你可以在这里找到它:https ://github.com/d-oliveros/isomorphine 。

免责声明:我是这个库的作者。

于 2015-07-28T16:15:49.917 回答