我可以res.send反应类中的nodejs同构反应的整个页面?

希望这听起来不是太荒谬,但是,做下面的事情可以吗?

app.get('/', function(req, res) { res.send(ReactDOMServer.renderToString(MainLayout())); }); 

其中MainLayout()是一个包含整个页面的React类。

 var React = require('react'); var MainLayout = React.createClass({ getInitialState: function () { return { headerStyle : {'border': '1px solid #ccc'} }; }, changeStyle: function () { this.setState({headerStyle: {'border': '1px solid #ab1'}}); }, render: function() { return ( <html> <head> <title>This is a test.</title> </head> <body> <div onClick={this.changeStyle} style={this.state.headerStyle}> Hi {this.props.name} </div> <script type="text/javascript" src='/public/js/app.js'></script> </body> </html> ); } }); module.exports = MainLayout; 

我已经设法让页面呈现,但我的onClick似乎没有回应我的点击页面加载后。

我只是想知道它是否可能使用Nodejs,React 0.14和Babel与反应预设。

所以我在这里试图做的是同构反应的最基本的意义。我碰巧愚蠢地忘记包括JavaScript在浏览器js中执行组件本身。

 reactDOM.render(<App />, document.getElementById('content')) 

它改变了一些代码之后有点工作,因为我意识到我可以渲染服务器端的html,head和body标签,但是在客户端没有反应,所以做一个渲染MainLayout会导致很多问题。 创build另一个名为“App”的React类,并将其填充到名为“content”的div标签之间。