【问题标题】:Is it possible to change the default double curly braces delimiter in polymer?是否可以更改聚合物中的默认双花括号分隔符?
【发布时间】:2015-11-18 08:32:43
【问题描述】:

我想在 Python/Flask 项目中使用聚合物。 Flask 使用 Jinja2 模板引擎,它也使用双花括号 {{}} 作为分隔符。

在 Jinja2 中转义大括号是可能的,但它会导致我想避免的代码非常丑陋和不可读。

虽然在 Jinja2 中也可以更改分隔符,但我宁愿在 Polymer 中更改它们,因为我们已经在项目中使用了一些 Jinja2 模板。

所以问题是,是否可以更改 Polymer 中的分隔符,如果可以,我们该怎么做?

谢谢

【问题讨论】:

  • 听起来有点XY - 你真的需要混合两个模板引擎吗? Polymer 组件不需要通过后端解析器 - 您应该确保它们与在服务器上生成“视图”的任何东西分开。
  • 嗨@Emissary,Jinja2 是服务器端和Polymer 客户端,我看不到我们只在两者之一中构建它,但也许我误解了;您是否建议我们将所有 Polymer 数据绑定保存在一个 .js 文件中,以便 Jinja2 呈现的 HTML 模板没有 Polymer {{}} 表达式?
  • 我并不是说不要同时使用两者——我建议你不要混合使用它们。前端具体的东西不需要经过Jinja2。
  • 明白了;所以你说没有必要直接在 HTML 页面中使用聚合物模板,所以通过 Jinja2 传递 HTML 不会搞砸。您能否详细说明在这种情况下 Polymer 模板(应该)放在哪里?
  • 我不使用 Jinja2,所以我不知道典型项目的外观,也无法告诉您如何构建应用程序,这是主观的。 Web 组件是按设计封装的——您可以直接为所有模块提供服务,而无需服务器端干预。您关心的唯一“html”文件是动态生成视图的索引或端点 - 它可以注入您需要的任何参数作为标记中指定的组件标签的属性。组件应该期望数据 X 和 Y 作为“公共”属性,而不是尝试将数据直接合并到它们的定义中。

标签: javascript polymer polymer-1.0


【解决方案1】:

在模板模块中,初始化 jinja2 环境时,您可以传递可选的开始/停止分隔符:

environment = jinja2.Environment(loader=loader, trim_blocks=True,block_start_string='@@',block_end_string='@@',variable_start_string='@=', variable_end_string='=@')

会将 {% statement %} 更改为 @@ statement @@ 并将 {{ var }} 转换为 @= var =@。

让它成为一个配置选项,只有设置后才通过,否则 jinja 将使用它自己的默认值。

致谢:Brian Coca Link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多