Reactjs React流星开放图标签
如何使用meteor和react/react路由器从服务器端呈现开放图形标记 我不知道如何使用反应头盔与流星和反应路由器 ThxReactjs React流星开放图标签,reactjs,meteor,react-router,Reactjs,Meteor,React Router,如何使用meteor和react/react路由器从服务器端呈现开放图形标记 我不知道如何使用反应头盔与流星和反应路由器 Thx 编辑: 我用react创建了一个meteor应用程序。结构如下所示: client/main.js client/main.html->在这里,我在div-id:上呈现应用程序,并获得基本的html标记,如head 导入/startup/client/routes.jsx-->react路由器的路由逻辑 比如: const myRoutes = ( <
编辑: 我用react创建了一个meteor应用程序。结构如下所示: client/main.js
client/main.html->在这里,我在div-id:上呈现应用程序,并获得基本的html标记,如head 导入/startup/client/routes.jsx-->react路由器的路由逻辑 比如:
const myRoutes = (
<Router history={browserHistory}>
<Route path="/" component={App}>
<IndexRoute component={Home}/>
<Redirect from='*' to='/404' />
</Route>
</Router>
);
(其中app是我的html文件上的div id)
server/main.js
(非常简单)
所以。。。我不明白文档上的服务器部分
“…作为字符串输出”?
“…作为反应组分”
我必须从服务器端“重新呈现”html文件?
我是说。。。在文档中,服务器似乎返回了一个变量作为html标记结构。。。
我不清楚,我也不知道这对我来说是否正确
编辑: 这篇文章帮助我解决了我的问题:
在客户端,渲染React组件时,您有一个DOM,并且会为每个组件(及其部分)创建DOM节点/元素 然后,需要将该标记插入到要发送给用户的HTML中
const html = `
<!doctype html>
<html>
<head></head>
<body>
<div id='root'>${html}</div>
<script src="/static/bundle.js"></script>
</body>
</html>`
res.send(html);
然后,您可以在html
模板中插入所需的值,这些值将包含在发送给用户的html中。由于开放图形标记是元标记,因此它们将包含在head
变量的meta
属性中
const html = `
<!doctype html>
<html>
<head>
${head.meta.toString()}
</head>
<body>
<div id='root'>${html}</div>
<script src="/static/bundle.js"></script>
</body>
</html>`
const html=`
${head.meta.toString()}
${html}
`
您能否包含您尝试执行的操作中的代码?react helmet
文档似乎非常直观地说明了如何做到这一点:我编辑了我的原始问题。好的,谢谢,我更清楚一点。但是,我不确定。。。“res.send(html);”与express服务器或其他更“低级”的服务器有关吗?还是应该和流星有关?我打算这样挖。谢谢。res.send
来自express
。
import { renderToString } from "react-dom/server"
const markup = renderToString(<App />)
const html = `
<!doctype html>
<html>
<head></head>
<body>
<div id='root'>${html}</div>
<script src="/static/bundle.js"></script>
</body>
</html>`
res.send(html);
const head = Helmet.rewind()
const html = `
<!doctype html>
<html>
<head>
${head.meta.toString()}
</head>
<body>
<div id='root'>${html}</div>
<script src="/static/bundle.js"></script>
</body>
</html>`