javascript - 如何获取模板中使用的所有变量的列表?

标签 javascript nunjucks

我遇到过这样的情况:有许多模板使用不同的变量。 如何获取一个模板中所有变量名称的列表,以便我可以准确地传入模板渲染时所需的内容?

我知道我可以使用正则表达式,但它并不像看起来那么容易实现。变量名称的语法可能确实不同,我没有时间或资源来查找每种可能的情况。

最佳答案

考虑到以下最小测试用例,正则表达式仍然有效:

{{ name }}
{{ name.child }}
{{ name[child] }}
{{ name["child"] }}
{{ name_last["child"] }}
{{ name1["child"] }}
{{ function() }}
{% if variable %}

因此,如果您想将其解析为 pcre(即使问题被标记为 我的理解是您想要预先解析页面),您:

  • 查找开头 {{ 和结尾 }},可以选择用空格填充:{{\s?\s?}}
  • 查找上下文短语的“中心词”:([\w]+)
  • 使用描述属性选择器的内容创建第二个非捕获组:((?:\..+)|(?:\[.+))?

剩下的就是: {{\s?([\w]+)((?:\..+)|(?:\[.+)?)\s?}} 其第一个捕获组 ($1) 将在测试示例中匹配 namename_lastname1.

Live example .

关于javascript - 如何获取模板中使用的所有变量的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47683223/

相关文章:

javascript - 使用 load() 加载 html 页面后,jQuery 单击事件处理程序不起作用

templates - 如果... !true nunjucks 中的条件渲染

javascript - 如何使用 nunjucks 和express 应用程序添加页面特定脚本?

PHP/Javascript - 更改按钮图像并调用数据库 onClick()?

javascript - 拖放区 : submit button doesn't work when no file selected

javascript - 将对象附加到 Javascript 数组

javascript - Nunjucks 预编译干净的 html

javascript - 使用 browserify 需要外部库时出错(this = 未定义)

node.js - 在客户端 JavaScript (nunjucks) 中访问 Express.js 局部变量

javascript - Grunt nunjucks-2-html