UNPKG

server_side_dijit

Version:

Middleware plugin for Connect that renders dijit widget templates, which are normally rendered client-side, on the server. Returned pages are modified to include the generated server-side templates inline, with a client-side JavaScript plugin to hook up the templates to the widget.

45 lines (35 loc) 1.17 kB
var render = require('./render.js'); module.exports = function (config) { // Create AMD packages from module configuration. var page = render({ dojo: config.dojo + "/dojo", dijit: config.dojo + "/dijit", server_side: __dirname + "/../public/js/server_side" }); return function (req, res, next) { var ignore = function (accept) { return accept.indexOf("text/html") === -1; }; if (ignore(req.headers.accept)) { return next(); } var write = res.write, end = res.end, buffer = ""; // Only hook into text/html requests.... res.write = function (chunk, encoding) { buffer = buffer.concat(chunk); return true; }; res.end = function (chunk, encoding) { if (chunk) { res.write(chunk); } // Fix content-length, we now have more data to send. var rendered = page(buffer); res.setHeader("Content-Length", rendered.length); return end.call(res, rendered, encoding); }; next(); }; };