qqi*_*ihq 5 templates locals pug
对于给定的Jade / Pug模板,我想获取模板中出现的所有变量的列表。
我的动机如下:在我的软件中,使用了不同的模板来生成一些HTML代码段。根据给定的上下文(即,给出了某些变量的值),我只建议那些模板,其中可以分配模板中的所有变量。
示例:对于这样的模板myTemplate:
html
head
title= myTitle
body
h1 #{value.headline}
p #{paragraph.text}
Run Code Online (Sandbox Code Playgroud)
我想得到一些这样的输出:
var variableNames = extractVariableNamesFromTemplate('myTemplate');
// variableNames = [ 'myTitle', 'value.headline', 'paragraph.text' ]
Run Code Online (Sandbox Code Playgroud)
是否有可用的现成产品?优选地,一种解决方案将考虑所有特定于语言的特征,例如包括,扩展等。
这不是您问题的完整答案,而是一个起点。通过调试哈巴狗代码,我注意到您可能可以在模板“编译”到代码的步骤之一中“挂钩”插件。看这里。似乎在编译的各个步骤中,您可以访问模板中存在的不同节点。
你也可以看看这个,它似乎提供了几乎你想要的东西。
如果你做类似的事情
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});
Run Code Online (Sandbox Code Playgroud)
标记的内容是不同标记的数组,“代码”或“插值代码”类型的标记似乎是不同的变量。
希望这可以帮助