本质上,您需要配置一个 node.js 服务器,它可以为每个请求响应 React 组件渲染结果作为纯字符串。关键是React.renderToString。与react-router结合的示例:
import express from "express";
import React from "react";
import Router from "react-router";
const app = express();
// set up Jade
app.set('views', './views');
app.set('view engine', 'jade');
import routes from "../shared/routes";
app.get('/*', function (req, res) {
Router.run(routes, req.url, Handler => {
let content = React.renderToString(<Handler />);
res.render('index', { content: content });
});
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
React-router 有助于基于 url 加载组件,但不是绝对必要的。无论如何,如果您是 React 生态系统的新手,我建议您查看这个用于同构 React 应用程序的入门套件。正如您应该知道的那样,您尝试做的是同构 Javascript。