a server side mustache.js example using node.js
Asked Answered
U

4

29

I'm looking for an example using Mustachejs with Nodejs

here is my example but it is not working. Mustache is undefined. I'm using Mustachejs from the master branch.

var sys = require('sys');
var m = require("./mustache");

var view = {
  title: "Joe",
  calc: function() {
    return 2 + 4;
  }
};    
var template = "{{title}} spends {{calc}}";    
var html = Mustache().to_html(template, view);

sys.puts(html);
Unbolt answered 22/3, 2010 at 15:26 Comment(0)
T
33

I got your example working by installing mustache via npm, using the correct require syntax and (as Derek said) using mustache as an object not a function

npm install mustache

then

var sys = require('sys');
var mustache = require('mustache');

var view = {
  title: "Joe",
  calc: function() {
    return 2 + 4;
  }
};

var template = "{{title}} spends {{calc}}";

var html = mustache.to_html(template, view);

sys.puts(html); 
Tearing answered 12/11, 2011 at 18:33 Comment(0)
B
18

Your example is almost correct. Mustache is an object, not a function, so it doesn't need the (). Rewritten as

var html = Mustache.to_html(template, view);

will make it happier.

Bradney answered 6/11, 2010 at 20:40 Comment(0)
U
10

Thanks to Boldr http://boldr.net/create-a-web-app-with-node Had to add the following code to mustache.js

for (var name in Mustache)
    if (Object.prototype.hasOwnProperty.call(Mustache, name))
        exports[name] = Mustache[name];

Not exactly sure what it is doing but it works. Will try to understand it now.

Unbolt answered 22/3, 2010 at 17:13 Comment(1)
It basically adds everything in the Mustache object to the [special] exports object. This is necessary as this is how modules work in node.js nodejs.org/docs/v0.4.8/api/modules.html#modulesOrthogenic
R
-2

Take a look to A Gentle Introduction to Node.js

To fix I opened up mustache.js and removed the var declaration when Mustache is being created

Rittenhouse answered 11/1, 2012 at 9:30 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.