Skip to content

Instantly share code, notes, and snippets.

@fed
Last active August 31, 2017 20:23
Show Gist options
  • Save fed/cb97c7fac70d4eff69d97323503a6064 to your computer and use it in GitHub Desktop.
Save fed/cb97c7fac70d4eff69d97323503a6064 to your computer and use it in GitHub Desktop.
Isomorphic JavaScript Server Logic Example
/*
* Rendering our component server side
*/
var React = require('react');
var App = require('../lib/components/todo-item');
var data = { title: 'Hello world!' };
var renderedComponent = ReactDOMServer.renderToString(<App data={data} />);
/*
* Injecting the rendered component in the Handlebars template
*/
var Handlebars = require('handlebars');
var fs = require('fs');
var fileData = fs.readFileSync(__dirname + '/templates/layout.handlebars').toString();
var layoutTemplate = Handlebars.compile(fileData);
var renderedLayout = layoutTemplate({
content: renderedComponent
});
/*
* Serving up the rendered template
*/
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.send(renderedLayout);
});
/*
* NOTE: This route is last since we want to match the dynamic routes above
* first before attempting to match a static resource (js/css/etc)
*/
app.use(express.static('./public'));
app.listen(6789, function() {
console.log('Listening on port 6789');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment