gpt4 book ai didi

haskell - 在 JavaScript 中嵌入 Heist 标签

转载 作者:行者123 更新时间:2023-12-02 11:58:55 24 4
gpt4 key购买 nike

由于某些库不兼容,我无法在同一应用程序中同时使用 Pandoc 和 Heist。因此,我决定选择 Markdown.JS在客户端浏览器中处理从 Markdown 格式数据到 HTML 的转换。从长远来看,这可能会带来一些额外的好处,但从短期来看,这只是因为 Pandoc 依赖于 Blaze-HTML 0.4,而 Heist 依赖于 Blaze-HTML 0.5。

因此,在类似博客的应用程序中,我有一个用于填写每个条目的模板,但每个条目的内容需要在页面加载后转换为 HTML。因此,我创建了一个如下所示的模板:

<h2> <a href="wiki/${target}"><entryTitle /></a> </h2>
<p class="entryDate"> <entryDate /> </p>
<div id="body_${entryDate}">
<entryBody />
</div>

<script type="text/javascript">
renderDiv("body_" + <entryDate />)
</script>

不幸的是,renderDiv 调用最终呈现如下:

<script type='text/javascript'>
renderDiv("body_" + <entryDate />)
</script>

我还尝试使用字符串嵌入形式(就像我对模板中的 div id 所做的那样):

<script type="text/javascript">
renderDiv("body_${entryDate}")
</script>

再次,它逐字呈现。

如何说服 Heist 拼接 javascript 中的entryDate?

或者,我正在使用 Prototype.JS作为 Javascript 库。有没有办法让我将脚本放在 div 内并基本上用“self”调用脚本?

<div id="body_${entryDate}">
<entryBody />
<script type="text/javascript">
renderDiv($(self))
</script>
</div>

最佳答案

Heist 故意不在脚本标签内进行拼接替换,因为拼接是在 DOM 元素上完成的,而脚本标签的内容是纯文本,而不是 DOM。我们这样做是因为如果我们按照您的要求进行操作,解析器将无法判断“<”字符是否表示二进制小于运算符或标记的开头。 user1891025 建议生成完整的脚本标记是一种方法。

但是,Heist 和 Pandoc 之间的依赖冲突不应阻止您使用我们内置的 Markdown 拼接。我们实际上并没有链接 Pandoc 库。我们只依赖pandoc可执行程序。因此,要使其工作,您所要做的就是从干净的存储库(或使用构建沙箱)构建 pandoc,将 pandoc 二进制文件放入您的路径中,然后从另一个干净的存储库/沙箱构建 Heist。那么你就不必担心任何 JavaScript 的事情了。

如果您仍然想使用 javascript 来实现此目的或执行其他操作,我建议您不要从 Heist 生成 javascript。 Heist 是为 HTML 生成而不是 javascript 生成而设计的。我更喜欢将所有 javascript 放在独立的 .js 文件中。然后您可以使用 this splice 方便地加载它们来自snap-extras图书馆。

要回答您的最后一个问题,您可以使用 renderDiv(this) 调用类似的 div。

关于haskell - 在 JavaScript 中嵌入 Heist 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14047248/

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