路由到SSR应用(Routing to SSR app)

2019-10-29 09:09发布

我使用创建反应的应用程序内和刚添加的SSR相同。

我只是增加了一个中间件renderToString的反应程序。

但我不知道有关路由。 如果它留在客户端或快递(服务器)上。 如果是在客户端它无法正常工作。 每个请求被投放到主页。 比较中肯的代码,我已经写了。 不知道怎么虽然修补它服务于其他的网页,仍然保持相同的设置。

代码如下

服务器/ index.js

import express from 'express';
import serverRenderer from './middleware/renderer';

const PORT = 3001;
const path = require('path');
const app = express();
const router = express.Router();

router.use('^/$', serverRenderer);
app.use('/static', express.static(path.join(__dirname, 'assets')));
router.use(express.static(
    path.resolve(__dirname, '..', 'build'),
    { maxAge: '30d' },
));
router.use('*', serverRenderer);
app.use(router);

...

中间件/ renderer.js

import {createMemoryHistory } from 'history';

...

const history = createMemoryHistory({
  initialEntries: ['/', '/next', '/last'],
  initialIndex: 0
});

export default (req, res, next) => {
    console.log(req.url); //logs `/` for every route
};

不明白我在做什么错在这里。

Answer 1:

它总是呈现网页的原因是因为你有下面的代码片段:

const history = createMemoryHistory({
  initialEntries: ['/', '/next', '/last'],
  initialIndex: 0
});`

如果您更改为

const history = createMemoryHistory({
    initialEntries: [req.url],
    initialIndex: 0
});

你的渲染功能里面应该呈现正确的URL。

希望帮助。



文章来源: Routing to SSR app