2016-08-28 6 views
0

HTMLテンプレート(.tplファイル)をあらかじめ(loadTemplates)処理してHeistConfigに入れなければならない理由を理解できます。これにより、HeistはHTMLをより効率的な形式に事前に処理できます。Compiled Heist(Haskell)では、あらかじめスプライスを作成する必要がありますか?

しかし、スプライスも事前に作成してHeistConfigに入れなければならない理由がわかりません。これのメリットは何ですか?とにかく実行時にスプライスが計算されるため、私は利点が見えません。この背後にある考え方は何ですか?

これはスプライスがロード時(ランタイムに加えて)でコードを実行できるためです。これが主な説明ですか?

答えて

1

スプライス関数(コンパイルされ、解釈される)は、ノード上で動作します。スプライスのタイプシグニチャーがNode -> m [Node]であると考えてください。これは、DOMレベルで動作しているため、比較的高価な操作です。スプライスの結果ノードがDOMツリーに挿入された後、ツリー全体がByteStringにレンダリングされる必要があります。コンパイルされたheistの背後にあるアイデアは、アプリケーションの初期化時に可能な限り多くのこのレンダリング作業を行うことでした。初期化の出力は[Chunk]となります。ここでChunkは静的なByteStringまたは動的なm ByteString(実際のタイプは少し異なります)のいずれかになります。初期化によってテンプレート全体が[Node]から[Chunk]に変換される前に、コンパイルされたスプライスを処理する必要があります。また、アプリケーションの初期化時に変換効率が最大化されるようにするためです。

https://github.com/snapframework/heist/wiki/Compiled-Splice-Formulations

+0

http://snapframework.com/docs/tutorials/compiled-splicesしかし計算場合(など、データベースからフェッチ)とチャンクへのその変換は実行時に行わなければならない。

詳細についてはこれらのリンクをチェックしてくださいとにかく、ロード時にスプライスを作成する必要があるのはなぜですか?なぜ効率を上げるのだろう? – haskellHQ

+0

私はロード時にスプライスを作成すると、読み込み時に何か重要なことが起こると効率が上がることが理解できます。実行時にすべての作業を行うスプライスはどうですか?これは私の質問のポイントです。 – haskellHQ

+0

@ haskellHQあなた自身のコメントをあなた自身で再読んでください。このように*いくつかのスプライスを最適化することができますが、ランタイム**で実行する必要があるスプライスはどんな場合でも最適化できません。ライブラリデザイナーは何を最適化し、何を最適化できないのかを最適化するのか? – Bakuriu

関連する問題