"for article, slug in public.articles._data" 中的 "slug" 是什么?有没有办法使用嵌套数组?
In "for article, slug in public.articles._data" what is "slug"? Is there a way to use nesting arrays?
我尝试使用 HarpJS,一个 NodeJS 静态博客生成器。在教程中有这样的元数据示例:
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
会获得所有高级别 object,我们可以通过 article.title
获得头衔或通过 article.date
获得日期。但是 slug
是什么?它是Jade/HarpJs中的预定义变量吗?如果是这样,还有其他人吗,还是我理解错了?我找不到关于这个主题的任何信息,如果有一篇好文章可供阅读,我将不胜感激。谢谢。
正如@Brennan 在评论中建议的那样,第二个参数可以是一个索引。变量 article
和 slug
的简单替换和重命名证明了这一点。但是还有一个问题。请考虑这个例子:
{
"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
此代码在编译过程中出错。如果我评论最后一行,它仍然有效。而且我不能用文档中的片段替换最后一行:
each val, index in obj
h1=index + ': ' + val
没有嵌套和two-dimensional数组?
要回答原始问题,请参阅我的评论:
The documentation is lacking. I'm not totally convinced this would work. According to this jade only supports each and while constructs. In other languages, the 2nd argument in a for..in loop will be the index. It's possible that's the case here, but I can't find any concrete documentation
第二个问题是模拟对象的问题。
看起来您需要检查以确保您的 属性 已在模拟数据中定义,或者进行一些检查以确保您期望的 属性 存在。
以下示例可能回答了问题:
<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>
我尝试使用 HarpJS,一个 NodeJS 静态博客生成器。在教程中有这样的元数据示例:
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
会获得所有高级别 object,我们可以通过 article.title
获得头衔或通过 article.date
获得日期。但是 slug
是什么?它是Jade/HarpJs中的预定义变量吗?如果是这样,还有其他人吗,还是我理解错了?我找不到关于这个主题的任何信息,如果有一篇好文章可供阅读,我将不胜感激。谢谢。
正如@Brennan 在评论中建议的那样,第二个参数可以是一个索引。变量 article
和 slug
的简单替换和重命名证明了这一点。但是还有一个问题。请考虑这个例子:
{
"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
此代码在编译过程中出错。如果我评论最后一行,它仍然有效。而且我不能用文档中的片段替换最后一行:
each val, index in obj
h1=index + ': ' + val
没有嵌套和two-dimensional数组?
要回答原始问题,请参阅我的评论:
The documentation is lacking. I'm not totally convinced this would work. According to this jade only supports each and while constructs. In other languages, the 2nd argument in a for..in loop will be the index. It's possible that's the case here, but I can't find any concrete documentation
第二个问题是模拟对象的问题。
看起来您需要检查以确保您的 属性 已在模拟数据中定义,或者进行一些检查以确保您期望的 属性 存在。
以下示例可能回答了问题:
<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>