在现有的JS Node上下文中编译Jade

4
我很感兴趣使用Jade创建静态HTML文件,以展示动态生成的数据。我已经有一组在Node中运行的JS脚本来创建我的数据。我希望能够计算我的数据并使用这些JS对象来编译我的HTML页面。
例如:
var myArry = MyLib.calculateSomeArray();
var myObj = MyLib.createSomeObj();
jade.compile(myTemplate);

Jade模板:

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

我假设这是那种显而易见的情况,但我在文档中却没有看到。我看到的最接近的答案似乎涉及Express,这似乎是不必要的。
1个回答

6

根据文档,我认为:

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>'

这是你想要的吗?


明白了。是的,那个方法可行。我觉得文档中没有很清楚地提到“locals”,也没有解释如何访问它们(哦,它们应该是一个哈希表,你可以直接引用键吗?),但我猜这又是那种“显而易见不需要在文档中提到”的事情。非常感谢! - Sam Fen
非常欢迎!没错,locals 对象的每个项目都被推送到模板上下文中,因此您可以直接访问它们 :) - Pierre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接