Skip to content

Instantly share code, notes, and snippets.

@irvinebroque
Last active August 29, 2015 14:10
Show Gist options
  • Select an option

  • Save irvinebroque/3e5de38acf0dba9cc1ab to your computer and use it in GitHub Desktop.

Select an option

Save irvinebroque/3e5de38acf0dba9cc1ab to your computer and use it in GitHub Desktop.
Server-side React-Router v0.11 + React-Hot-Loader
// Use JSX on the server
require('node-jsx').install({ extension: '.jsx' });
// Stupid simple server
var express = require('express');
// Use React on the server
var React = require('react');
// Route config
var routes = require('./routes.jsx');
// Head
var Head = React.createFactory(require('./components/Head.jsx'));
// Require React-Router
var Router = require('react-router');
var Route = Router.Route;
var NotFoundRoute = Router.NotFoundRoute;
var DefaultRoute = Router.DefaultRoute;
var Link = Router.Link;
var RouteHandler = Router.RouteHandler;
var server = express();
server.set('state namespace', 'App');
server.use('/public', express.static(__dirname + '/build'));
server.use(function (req, res, next) {
Router.run(routes, req.path, function (Handler, state) {
var head = React.renderToStaticMarkup(Head());
var content = React.renderToString(React.createElement(Handler, null));
res.write('<html>');
res.write(head);
res.write('<body>');
res.write('<div id="app">' + content + '</div>');
res.write('</body>');
res.write('<script src="/public/js/client.js" defer></script>');
res.write('</html>');
res.end();
});
});
var port = process.env.PORT || 3000;
server.listen(port);
console.log('Listening on port ' + port);
@irvinebroque
Copy link
Author

Moved this into a repository here:

https://github.com/irvinebroque/isomorphic-hot-loader

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment