Skip to content

Instantly share code, notes, and snippets.

@smithcommajoseph
Created July 26, 2013 04:28
Show Gist options
  • Select an option

  • Save smithcommajoseph/6086201 to your computer and use it in GitHub Desktop.

Select an option

Save smithcommajoseph/6086201 to your computer and use it in GitHub Desktop.
{{! APPDIR/app/templates/__layout.hbs }}
<script>
(function() {
var App = window.App = new (require('app/app'))({{json appData}});
App.bootstrapData({{json bootstrappedData}});
App.start();
})();
</script>
// APPDIR/server/server.js
function initMiddleware() {
app.configure(function() {
// set up views
app.set('views', __dirname + '/../app/views');
app.set('view engine', 'js');
app.engine('js', rendrServer.viewEngine.render);
// set the middleware stack
app.use(express.compress());
app.use(express.static(__dirname + '/../public'));
app.use(express.logger());
app.use(express.bodyParser());
app.use(app.router);
app.use(mw.errorHandler());
});
}
//rendr/server/viewEngine.js
// http://expressjs.com/api.html#app.engine
// viewPath = '/Users/a598063/Sites/consumer-analytics-demos/app/views/maps/index.js'
// data = { settings: {}, locals: {'our prefetched data, if there is any'}, app: {}, req: {}, ...}
// callback =
// res.render(viewPath, viewData, function(err, html) {
// if (err) return router.handleErr(err, req, res);
// res.set(router.getHeadersForRoute(route));
// res.type('html').end(html);
// });
// from rendr/server/router.js ServerRouter.prototype.getHandler
ViewEngine.prototype.render = function render(viewPath, data, callback) {
var app, layoutData;
data.locals = data.locals || {};
app = data.app;
layoutData = _.extend({}, data, {
body: this.getViewHtml(viewPath, data.locals, app),
appData: app.toJSON(),
bootstrappedData: this.getBootstrappedData(data.locals, app),
_app: app
});
this.renderWithLayout(layoutData, app, callback);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment