在“for article,slug in public.articles._data”什么是“slug”? 有没有办法使用嵌套数组?

我试验了一个NodeJS静态博客生成器HarpJS。 在教程中有这样的元数据的例子:

for article, slug in public.articles._data a(href="/articles/#{ slug }") h2= article.title 

_data.json文件:

 { "hello-world": { <-- available everywhere as public.articles._data "title": "Hello World.", "date": "2013-02-28" }, "hello-brazil": { "title": "Hello Brazil.", "date": "2013-03-04" } } 

如果我理解for article权利拿到每一个高层次的对象,我们可以用article.title或者article.title来得到标题。 但是什么是slug ?? 它是Jade / HarpJs中的预定义variables吗? 如果是这样,还有其他的,还是我认为这个概念错了? 我找不到关于这个主题的任何信息,如果有一篇好文章,我将不胜感激。 谢谢。

正如@Brennan在评论中所言,第二个参数可能是一个索引。 variablesarticleslug简单replace和重命名certificate了这一点。 但还有一个问题。 请考虑这个例子:

 { "hello-world": { "title": "Hello World.", "date": "2013-02-28", "test": { "testContent": "123" } }, "hello-brazil": { "title": "Hello Brazil.", "date": "2013-03-04" } } for s, a in public.articles._data a(href="/articles/#{ a }") h2= s.title h3= s.date h3= a - var obj = s.test h3= obj h3= obj.testContent 

此代码在编译过程中出错。 如果我评论最后一行,它的工作原理。 我不能用文档中的代码片段replace最后一行:

 each val, index in obj h1=index + ': ' + val 

没有嵌套和二维数组?

要回答原始问题,请参阅我的评论:

文件是缺乏的。 我不完全相信这会起作用。 根据这个玉器只支持每一个构造。 在其他语言中,for..in循环中的第二个参数将成为索引。 有可能是这种情况,但我找不到任何具体的文件

第二个问题是模拟对象的一个​​问题。

看起来你需要一个检查,以确保你的财产在你的模拟数据中定义,或做一些检查,以确保你期望的财产存在。

下面的例子可能回答这个问题:

 <h1><%= title %></h1> <ul> <% for (var slug in public.posts._data) { %> <% var post = public.posts._data[slug] %> <li> <a href="posts/<%= slug %>"> <%= post.title %> </a> </li> <% } %> </ul>