Express/connect middleware to pre-render ajax page for non-ajax browsers, especially using angular.js
npm install connect-prerendererconnect-prerenderer
===================

Express/connect middleware to pre-render ajax page for non-ajax browsers, especially using angular.js
How to use
----------
% npm install connect-prerenderer
In app.js:
var express = require('express');
var prerenderer = require('connect-prerenderer');
var app = express();
app.use(prerenderer());
...
Options
-------
* targetGenerator: a name or a function to generate a new one for HTTP request.
* "default" --- check "/PRERENDER-" prefix which will be removed, and replace "HASH-" to "#/" and all "-"s to "/"s to make a target URL. (see the source code for more options.)
* "googlebot" --- follow
* a function that returns a target URL for prerendering or null.
* timeout: an integer in milliseconds to specify how long it waits to prerender.
* cookieDomain: a domain name to allow passing cookies.
* attachConsole: when truthy, attach global.console to window.console when prerendering files
(useful for debugging)
* subprocess: if truthy, do the rendering in a subprocess (it helps to prevent possible memory leaks in jsdom). You can also set the RENDERER_USE_SUBPROCESS environment variable to any value (except an empty string) to achieve the same result. Try it if you experience memory leaks.
Coding conventions (client-side)
--------------------------------
* If an html is prerendered, the body is like:
* When JavaScript code finishes prerendering, it should call: document.onprerendered()
Notes for AngularJS
-------------------
The following snippet would help AngularJS to work:
To keep templates for interpolation in a prerendered html,
use the modified version of angular.js (v1.2.5)
located in test/server/public/.
Limitations
-----------
* style attributes are not preserved by jsdom (use class).
AngularJS only limitations:
* ng-repeat workaround only works with ng-repeat attributes.
* ng-repeat-(start|end) is not supported.