【问题标题】:Pug/Jade get all variables in a given templatePug/Jade 获取给定模板中的所有变量
【发布时间】:2016-11-09 20:56:57
【问题描述】:

对于给定的 Jade/Pug 模板,我想获取模板中出现的所有变量的列表。

我的动机如下:在我的软件中,使用不同的模板来生成一些HTML sn-ps。基于给定的上下文(即给定某些变量的值),我只想建议那些模板,模板中的所有变量都可以分配。

示例:对于模板myTemplate 如下:

html
    head
        title= myTitle
    body
        h1 #{value.headline}
        p #{paragraph.text}

我想得到一些这样的输出:

var variableNames = extractVariableNamesFromTemplate('myTemplate');
// variableNames = [ 'myTitle', 'value.headline', 'paragraph.text' ]

有现成可用的东西吗?最好是考虑到所有特定于语言的功能(例如包含、扩展等)的解决方案。

【问题讨论】:

    标签: templates pug locals


    【解决方案1】:

    这不是您问题的完整答案,而是一个起点。通过调试 pug 代码,我注意到您可能会在模板“编译”到代码的步骤之一中“挂钩”一个插件。看here。 似乎在编译的各个步骤中,您可以访问模板中存在的不同节点。

    你也可以看看this,它似乎提供了几乎你想要的东西。

    如果你做类似的事情

    var lex = require('pug-lexer');
    
    var filename = 'template.pug';
    var src = `
    html
        head
            title= myTitle
        body
            h1 #{value.headline}
            p #{paragraph.text}`;
    
    var tokens = lex(src, {filename});
    

    标记的内容是不同标记的数组,类型为“代码”或“插值代码”的标记似乎是不同的变量。

    希望对你有帮助

    【讨论】:

    • 谢谢你,马修!这看起来非常有价值。它仍然需要额外的逻辑,例如对于条件和变量赋值,但这是朝着正确方向迈出的一大步。 PS:如果我在接下来的两天内不能得到更完整的解决方案,那么赏金就是你的!
    猜你喜欢
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 2016-10-28
    • 2020-04-16
    • 2018-02-06
    • 2018-06-21
    相关资源
    最近更新 更多