3

一部のライブラリの非互換性のため、同じアプリケーションでPandocとHeistの両方を使用することはできません。そのため、クライアントのブラウザでMarkdown形式のデータからHTMLへの変換を処理するためにMarkdown.JSを使用することにしました。これは、長期的にはいくつかの優れた追加の利点をもたらす可能性がありますが、短期的には、PandocがBlaze-HTML 0.4に依存し、HeistがBlaze-HTML0.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>

繰り返しますが、それは逐語的にレンダリングします。

JavaScript内のentryDateでスプライスするようにHeistを説得するにはどうすればよいですか?

または、 Prototype.JSをJavascriptライブラリとして使用しています。スクリプトをdiv内に配置し、基本的に「self」でスクリプトを呼び出す方法はありますか?

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

1 に答える 1

2

スプライスはDOM要素で行われ、スクリプトタグの内容はDOMではなくプレーンテキストであるため、Heistは意図的にスクリプトタグ内でスプライス置換を行いません。このようにするのは、必要な処理を行った場合、パーサーは「<」文字が2進数の演算子よりも小さいか、タグの開始かを判断できないためです。完全なスクリプトタグを生成するというuser1891025の提案は、それを行う1つの方法です。

ただし、HeistとPandocの間の依存関係の競合により、組み込みのマークダウンスプライスの使用が妨げられることはありません。Pandocライブラリを実際にリンクすることはありません。pandoc実行可能プログラムのみに依存しています。したがって、それを機能させるために必要なのは、クリーンなリポジトリからpandocをビルドし(またはビルドサンドボックスを使用し)、パスにpandocバイナリを配置してから、別のクリーンなリポジトリ/サンドボックスからHeistをビルドすることです。そうすれば、このjavascriptのことを心配する必要はありません。

それでもこのようなものにJavaScriptを使用したい場合は、HeistからJavaScriptを生成しないことをお勧めします。Heistは、JavaScriptの生成ではなく、HTMLの生成用に設計されました。私はすべてのJavaScriptをスタンドアロンの.jsファイルに入れることを好みます。次に、 snap-extrasライブラリからこのスプライスを使用してそれらを便利にロードできます。

最後の質問に答えるには、そのようなdivを。で呼び出すことができますrenderDiv(this)

于 2012-12-27T21:52:24.897 に答える