首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >服务器端对HTML的反应

服务器端对HTML的反应
EN

Stack Overflow用户
提问于 2019-06-27 06:11:13
回答 1查看 839关注 0票数 0

如何配置节点服务器来托管React组件/模板,并在传入props后将HTML输出为字符串?

概念:

代码语言:javascript
复制
const React = require('react');
const { renderToStaticMarkup } = require('react-dom/server');

const sayHello = props => (
   return renderToStaticMarkup(<p>Hello, {props.name}!</p>);
)

module.exports = sayHello;

这似乎是要做的最简单的事情,但是在NodeJS中很少有文档可以做到这一点。我试过很多不同的webpack/巴别塔插件和node errors,只要你一写jsx,也就是:<p>Hello...</p>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-27 07:00:51

代码语言:javascript
复制
import jsx from '../src/app';
import { renderToString } from "react-dom/server";


function template(reactDom) {
    return `
        <!DOCTYPE html>
        <html>
        <head>
            <meta charset="utf-8">
            <meta http-equiv="X-UA-Compatible" content="IE=edge" />
            <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
            <meta name="viewport" content="width=device-width, initial-scale=1">

            <title>React App</title>

        </head>

        <body>
            <div id="app">${reactDom}</div>

            <script src="/app.bundle.js"></script>
         </body>
        </html>
    `;
}

app.get("*", function (req, res, next) {
    const reactDom = renderToString(jsx);
    res.writeHead(200, { "Content-Type": "text/html" });
    res.end(template(reactDom));
});

jsx是应用程序文件,而不是index.js文件,index.js包含ReactDom.render,这不是必需的。

renderToString

值得研究一下Next.js

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56781559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档