当使用服务器端渲染的 React 模板而不是React Router时,站点可以使用 Express 来处理路由吗?
我希望为我的组件和存储/操作使用类似于此示例的 Fluxxor。然后我打算使用 Express 路由器来处理页面路由服务器端,并在每个路由上将所需的组件渲染为字符串。在下面这个基本示例中,我的app.js是一个使用 Flux 的简单 todo 示例,但在生产中它可能是适合路由页面的顶级组件。eg/products
将是一个产品组件,以及它的子组件。
这是我的基本 server.js 文件
var express = require('express');
var React = require('react');
var App = require('./app');
var app = express();
var port = 4580;
// include my browserify bundle.js
app.use('/public', express.static(__dirname + '/public'));
app.get('/', function(req, res) {
/* each route will render the particular component to string. */
var markup = React.renderToString(App());
res.send(markup);
});
// I will seperate my views out like this
// app.get('/products', product.list);
// app.get('/users', user.list);
// app.get('/products:id', product.list);
如果有帮助,我的基本服务器端渲染方法就在这里。
所以正如我所说,是否可以使用 Express 进行路由,因为我发现 React Rouuter 非常复杂,而且在服务器上拥有路由似乎更容易,并在服务器端呈现每个页面及其组件.
除了在 Express 而不是 React Router 中处理路由的复杂性之外,我是否在这里失去了其他任何东西?因为我认为我可以处理这个问题,但是我想确保我没有通过仅使用 Express 根据不同的路由渲染到字符串来搞乱 React 的服务器端渲染点。
为了清楚起见,我对 React Router 旨在解决的问题没有意见,并且理解我将做一些类似于 React Router 概述中建议的事情,因为从长远来看是有问题的。
// Not React Router API
otherRouter.route('/', function () {
React.render(<DashboardRoute/>, document.body);
});
otherRouter.route('/inbox', function () {
React.render(<InboxRoute/>, document.body);
});
otherRouter.route('/calendar', function () {
React.render(<CalendarRoute/>, document.body);
});
虽然像这样的一级共享 UI 很容易处理,但越深入越会增加复杂性。
我基本上假设我可以处理这种复杂性,无论这是否属实,我想我会及时发现。