Pug 按特定顺序呈现泥/玉混合物

Pug 按特定顺序呈现泥/玉混合物,pug,Pug,有没有办法让jade/pug在呈现页面的下一部分之前等待执行某些操作 尝试实现从内容部分自动生成的页面索引/导航: 例子 - 将索引放在节的前面会导致一个空的arr/节,因为这些节尚未执行。在部分混合之后,它工作得很好,不幸的是,索引在页面末尾没有意义 已考虑使用脏设置超时来等待编译节。但这似乎无法呈现实际的标记: mixin index() - setTimeout(function(){ console.log(arr) // works fine, f

有没有办法让jade/pug在呈现页面的下一部分之前等待执行某些操作

尝试实现从内容部分自动生成的页面索引/导航:

例子 -

将索引放在节的前面会导致一个空的arr/节,因为这些节尚未执行。在部分混合之后,它工作得很好,不幸的是,索引在页面末尾没有意义

已考虑使用脏设置超时来等待编译节。但这似乎无法呈现实际的标记:

mixin index()
    - 
      setTimeout(function(){
        console.log(arr) // works fine, full array is looged
        ul // doesn't render anything at all
          each item in arr
             li= item 
      },500)

如何解决这个问题?

有趣的问题!据我所知,这在您建议的过程中是不可能的,因为Pug文件(以及许多其他标记语言中的文件)通常是按顺序/从上到下计算的,而不是并行计算的

我能想到的一个解决方案是拆分数据定义和数据使用步骤:首先,在文件的开头,定义完整的对象数组,然后使用
+index
+section
命令迭代该数组。另一个解决方案可能是在其他地方定义该数组(例如,在JSON/YAML文件中,您可以加载到调用这些文件上的编译器的脚本中)。然后可以通过上下文变量将加载的数组传递到此模板

这两种解决方案都不理想,但它们确实可以解决问题

+index() // arr/index is empty at this time

+section({foobarz})
+section({foobarz})
+section({foobarz})
+section({foobarz})
...

+index() // arr/index works perfectly
mixin index()
    - 
      setTimeout(function(){
        console.log(arr) // works fine, full array is looged
        ul // doesn't render anything at all
          each item in arr
             li= item 
      },500)