【问题标题】:In "for article, slug in public.articles._data" what is "slug"? Is there a way to use nesting arrays?在“for article, slug in public.articles._data”中,什么是“slug”?有没有办法使用嵌套数组?
【发布时间】:2015-07-03 14:00:22
【问题描述】:

我尝试了 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 获取每个高级对象,我们可以使用article.title 获得标题或使用article.date 获得日期。但是slug 是什么?它是 Jade/HarpJs 中的预定义变量吗?如果是这样,还有其他人,还是我的概念有误?我找不到有关此主题的任何信息,如果有好文章可以阅读,我将不胜感激。谢谢。

正如@Brennan 在 cmets 中建议的那样,第二个参数可能是一个索引。变量articleslug 的简单替换和重命名证明了这一点。但是还有一个问题。请考虑这个例子:

{
 "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

此代码在编译过程中出错。如果我评论最后一行,它虽然有效。而且我不能用文档中的 sn-p 替换最后一行:

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

没有嵌套和二维数组?

【问题讨论】:

  • 你说得对,缺少documentation。我不完全相信这会奏效。根据this 玉只支持eachwhile 构造。在其他语言中,for..in 循环中的第二个参数是index。这里可能就是这种情况,但我找不到任何具体的文档。
  • 谢谢@Brennan!这种方法具有可理解的逻辑。我编辑了这个问题,你能看一下吗?提前谢谢你。
  • 嘿@Georgy,如果没有在玉中筑巢,我会感到惊讶。你会发布你得到的错误吗?我也不确定当s.testhello-brazil 对象中未定义时模板将如何反应。
  • @Brennan 您猜测问题出在 s.test 在 hello-brazil 对象中未定义。 是的,如果已定义,一切正常。请您写下答案,以便我将其标记为解决方案吗?感谢您的宝贵时间和关心,再次感谢您。
  • 乐于助人!我很高兴我们成功了。

标签: json node.js pug harp


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    缺少文档。我不完全相信这会奏效。根据这个玉只支持每一个同时构造。在其他语言中,for..in 循环中的第二个参数将是索引。这里可能就是这种情况,但我找不到任何具体的文档

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

    看起来您需要检查以确保您的属性已在您的模拟数据中定义,或者进行一些检查以确保您期望的属性存在。

    【讨论】:

      猜你喜欢
      • 2021-11-06
      • 2013-04-22
      • 1970-01-01
      • 2023-02-18
      • 2019-11-24
      • 2015-07-15
      • 2020-01-06
      • 2020-05-05
      • 2018-04-30
      相关资源
      最近更新 更多