由于一些库的不兼容,我不能在同一个应用程序中同时使用Pandoc和Heist。因此,我决定使用Markdown.JS来处理在客户端浏览器中从Markdown格式数据到超文本标记语言的转换。从长远来看,这可能会有一些不错的额外好处,但在短期内,这只是因为Pandoc依赖于Blaze-HTML0.4,而Heist依赖于Blaze-HTML0.5。
因此,在一个类似weblog的应用程序中,我有一个用来填写每个条目的模板,但是在页面加载之后,需要将每个条目的内容转换为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>发布于 2012-12-28 05:52:25
Heist有意不在script标记内进行拼接替换,因为拼接是在DOM元素上完成的,并且script标记的内容是纯文本,而不是DOM。我们这样做是因为如果我们做了你想做的,解析器将不能判断一个'<‘字符代表的是二进制小于运算符,还是一个标签的开始。User1891025建议生成一个完整的脚本标记,这是一种方法。
然而,Heist和Pandoc之间的依赖冲突不应该阻止你使用我们内置的markdown拼接。我们实际上并没有链接Pandoc库。我们只依赖于pandoc可执行程序。所以你要做的就是从一个干净的存储库构建pandoc (或者使用一个构建沙箱),将pandoc二进制文件放入你的path中,然后从另一个干净的存储库/沙箱构建Heist。这样你就不必担心这些javascript的东西了。
如果你仍然想使用javascript来做这件事或其他事情,我建议你不要从Heist生成javascript。Heist是为HTML生成而设计的,而不是javascript生成。我更喜欢把我所有的javascript放在独立的.js文件中。然后,您可以方便地使用snap-extras库中的this splice加载它们。
要回答你的最后一个问题,你可以用renderDiv(this)调用一个这样的div。
https://stackoverflow.com/questions/14047248
复制相似问题