gpt4 book ai didi

反向的 Javascript 模板语言

转载 作者:数据小太阳 更新时间:2023-10-29 04:42:36 26 4
gpt4 key购买 nike

是否有类似模板引擎(la Mustache.js)的东西可以“反向”进行模板制作?

这意味着我提供呈现的 html 和模板文件,通过引擎运行它,并从中获取数据(比如 JSON 结构)。

我知道这是可以用“屏幕抓取库”完成的事情,但我从未见过使用 mustache 样式模板(不管它们叫什么)的屏幕抓取库。

最佳答案

不存在通用解决方案。例如。您永远无法反转以下模板:{{foo}}{{bar}},因为无法找到第一个 mustache 停止的位置和第二个 mustache 的开始位置。

例如:

html: 'hello world!'
template: '{{foo}}{{bar}}'
model: {
foo: '',
bar: 'hello world!'
}
model2: {
foo: 'hello world!',
bar: ''
}

model 和 model2 都从模板中呈现完全相同的 html,因此它们都是有效的反转。

但是如果您为模板制定一些规则,则可以毫无歧义地执行此操作。

规则:

  1. 两个 mustache 永远不能碰(上面解释过)。
  2. mustache 内容的开头永远不能与 mustache 之后的第一个文本部分相同(否则我们找不到 mustache 的结尾)。
  3. 节中的第一个文本部分不能与节后的第一个文本部分相同(否则我们找不到节的结尾)。
  4. 最好不要使用富文本 {{{}}} mustache (它可以包含任何内容,因此反向匹配意味着它可以匹配文档的其余部分)。

这些规则似乎对纯文本有很大的限制,但对于 xml 和 html 它们工作得很好(如果你只对元素和属性内容感兴趣)。例如,如果您仅使用明文 {{}} mustache ,则第二条规则永远不会成为问题。

下面的模板可以毫无歧义地反转,例如:

<div>
<p>{{title}}</p>
<ul>
{{#list}}
<li>{{item}}</li>
{{/list}}
</ul>
</div>

但是在 之前添加另一个

  • 会使模板不明确(规则 3)。

    我还没有在网上找到任何执行此操作的代码,所以我已经开始为此编写一个库。但它还没有完成,每次我工作时,我都会发现新的局限性。只有非常简单的模板才能正常工作(我允许的唯一 mustache 是 {{}}、{{#}} 和 {{/}})。


    我找到了使用另一个模板系统的解决方案:https://github.com/fabiomcosta/mootools-meio-template/tree/master .它似乎具有相同的局限性。

  • 关于反向的 Javascript 模板语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18168707/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com