我从Jed Schmidt发现了dōmo,它似乎对在node.js中创建服务器端HTML很有用。
基本的东西有效,但我不知道如何在数组上使用像forEach()
之类的循环来创建像表行这样的东西。我创建了一个基本的例子:
var domo = require('domo');
var fruits = [];
fruits.push("banana", "apple", "peach");
var document = DOCUMENT({type: "html"},
HTML(
HEAD(
TITLE("bla"),
SCRIPT({src: "/script.js"})
),
BODY(
TABLE(
THEAD( TR( TD("Predicate"), TD("Object"))),
TBODY(
fruits.forEach(function(value, index) {
console.log("I am in forEach");
console.log("Value: "+value);
console.log("Key: "+index);
TR(
TD(index),
TD(value)
)
})
)
)
)
)).outerHTML;
console.log(document);
这导致此输出:
<!DOCTYPE html>
<html>
<head>
<title>
bla
</title>
<script src="/script.js" type="text/javascript">
</script>
</head>
<body>
<table>
<thead>
<tr>
<td>
Predicate
</td>
<td>
Object
</td>
</tr>
</thead>
<tbody>
<!--undefined-->
</tbody>
</table>
</body>
</html>
如果我得到了正确的结果,我无法在forEach循环中访问domo的范围。这是正确的解释吗?这样做的正确工作方式是什么?
解决方案:
感谢Bergi的提示和Jed Schmidt的修正,这个片段现在有效(domo&gt; = 0.5.5):
TBODY( fruits.map(function(value, index) {
return TR(
TD(String(index)),
TD(value)
);
}))
)