Manatax Manatax - 1 year ago 307
Node.js Question

How to: Use ejs without express

I'm starting with node in general, and I'm attempting to do a site without express.
I would none the less want to use ejs to inject my html and this is where my problem is...
How do I attach the ejs.render(...) to the response?

PS: I know it might be a better option to use express, but I want to know how it works underneath before bridging it.

Something like:

var ejs = require("ejs");

function index (response, request, sequelize) {
response.writeHead(200, {"Content-Type": "text/html"});
test_data = "test data";

exports.index = index;

But that works ^_^


Answer Source

There is a project called Consolidate.js which provides a common API for many template engines. This ensures they can all be interchangeable. If you want to render templates directly, you want to be compatible with this API.

Sample code from the Consolidate.js README:

var cons = require('consolidate');
cons.swig('views/page.html', { user: 'tobi' }, function(err, html){
  if (err) throw err;
  console.log(html); // Or write to your `res` object here

This sample is for Swig, but similar code works for EJS or any of the compatible engines.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download