2012-05-22 20 views
4

我有兴趣使用Jade创建动态生成数据的静态HTML文件。我已经有一组JS脚本在Node中运行时创建我的数据。我希望能够做的是计算我的数据,然后使用我创建的JS对象编译我的HTML页面。从现有JS节点上下文中编译Jade

例如

var myArry = MyLib.calculateSomeArray(); 
var myObj = MyLib.createSomeObj(); 
jade.compile(myTemplate); 

玉模板:

each item in myArry 
    li= item 
each val, key in myObj 
    li #{key}: #{val} 

我假设这是那些情况下,它是如此明显,我很想念它在文档中一个,但我没有看到它和我见过的最接近的答案似乎涉及Express,这看起来应该是不必要的。

回答

6

我会说,鉴于the docs

var jade = require('jade'); 

// Create the function 
var fn = jade.compile(myTemplate); 
var html = fn({ myArry: myArry, myObj: myObj }); 

只是测试,这是工作得很好:

> var jade = require('jade'); 
undefined 
> var myTemplate = "each item in myArry\n\tli= item\neach val, key in myObj\n\tli #{key}: #{val}" 
undefined 
> var myObj = { foo: 'bar', woo:'loo' }; 
undefined 
> var myArry = ['moo', 'boo', 'roo']; 
undefined 
> var fn = jade.compile(tpl); 
undefined 
> fn({ myArry: myArry, myObj: myObj }); 
'<li>moo</li><li>boo</li><li>roo</li><li>foo: bar</li><li>woo: loo</li>' 

这是你想要的吗?

+0

明白了。是的,这确实有效。我想说的是,这些文档并不清楚,它们再也没有提到过“本地人”,也没有解释如何访问它们(哦,它们应该是散列表,你可以直接引用键)? ,但是,我认为这是“在文档中显而易见”的事情之一。非常感谢! –

+0

非常欢迎您!而且,'本地'对象的每一项都被推送到模板上下文,所以你可以直接访问它们:) – Pierre