You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取网页端编辑的模板内调用的函数、类及参数列表?

获取网页模板中的类、函数及参数列表的方法

1. 利用模板引擎的AST解析能力

不同模板引擎都支持将模板解析为抽象语法树(AST),通过遍历AST可以精准提取类、函数和参数:

  • Jinja2:用官方库的解析方法遍历节点,识别函数调用和类引用:
from jinja2 import Environment

template_content = """你的模板内容"""
ast = Environment().parse(template_content)

def traverse_ast(node):
    # 递归遍历子节点
    if hasattr(node, 'nodes'):
        for subnode in node.nodes:
            traverse_ast(subnode)
    # 识别函数调用
    elif node.__class__.__name__ == 'Call':
        func_name = getattr(node.node, 'name', str(node.node))
        args = [str(arg) for arg in node.args]
        print(f"函数调用: {func_name}, 参数: {args}")
    # 识别类/变量引用
    elif node.__class__.__name__ == 'Name':
        print(f"引用对象: {node.name}")

traverse_ast(ast)
  • Handlebars:使用官方解析库生成AST,从CallExpression节点提取Helper函数和参数;Vue模板则用@vue/compiler-sfc解析单文件组件,遍历AST的表达式节点获取方法信息。

2. 从渲染上下文反向提取

如果能拿到模板渲染时传入的上下文对象,直接遍历即可获取所有可用的类和函数:

  • 比如Python后端渲染Jinja2模板时,用inspect模块提取函数签名:
import inspect

def extract_context_info(context):
    for name, obj in context.items():
        if inspect.isfunction(obj) or inspect.isclass(obj):
            sig = inspect.signature(obj)
            print(f"{name}: {sig}")

# 传入模板渲染时的上下文字典
extract_context_info(context)

3. 静态分析工具或正则辅助

  • 用正则匹配模板中的函数调用格式(以Jinja2为例),快速提取基础信息(精度有限,适合简单模板):
{{\s*(\w+)\((.*?)\)\s*}}
  • 使用模板专用的静态分析工具,比如Jinja2的jinja2-lint扩展,或自定义脚本结合AST解析,比正则更准确。

4. 前端模板的浏览器端调试

如果是前端运行时渲染的模板(如Handlebars),在浏览器控制台直接访问引擎注册的函数集合:

// 遍历Handlebars所有Helper函数
for (const [name, func] of Object.entries(Handlebars.helpers)) {
    console.log(`${name}: ${func.toString()}`);
}

内容的提问来源于stack exchange,提问作者Bohdan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 11:22:11