5

私のプロジェクトの1つでは、HTMLとJavaScriptのコードを作成する必要があります。代わりに静的に型付けされた言語を使用したいので、OPAを評価しています。ただし、私の目標は静的ページのコレクションを生成することなので、OPAHTTPサーバーと永続層については気にしません。

だからここに私の質問が来ます:OPAで静的ページのコレクションを生成する(簡単な)方法はありますか?

4

3 に答える 3

5

私の理解が正しければ、Opa で xhtml をビルドしたいのですが、提供するのではなく、ファイルに出力しますか?

そのための 2 つの関数があります。

これら 2 つの関数の違いは、最初の関数が関連する opa js コードを生成しないことです。

次に、結果の文字列をディスク上の HTML ファイルに書き込むことができます。

stdlib のディスクにファイルを書き込む方法は提供していないことに注意してください。そのためには bsl システムを使用する必要があります。

write = %%BslFile.of_string%%

小さな例:

static.opa

write = %%BslFile.of_string%%

xhtml_page(num:int) =
  <p>Page {num}</p>

pages = [1, 2, 3, 4, 5]

do List.iter(i ->
  xhtml_content = xhtml_page(i)
  string_content = Xhtml.serialize_as_standalone_html(xhtml_content)
  write("{i}.html", string_content)
, pages)

コンパイルして実行:opa static.opa --

これにより、5 つの html ページが生成されます。

于 2011-12-13T20:53:30.153 に答える
2

Xhtml.precompiled を使用できます。これは xhtml 値を取り、プリコンパイルされた (内部的に既に文字列にフラット化されている) xhtml を返します。

Web ページの一部が静的で、残りが動的である場合に便利です。静的部分にいくらかのコスト(シリアル化、メモリなど)を支払うことを避けることができます。

于 2011-12-23T19:30:03.153 に答える
0

トーマス、コードに(JSの代わりに)Opaを使用したいと思いますよね?

静的ページをたくさん持つことは、この言語の一般的な使用法ではありませんが、それを簡単に実行できることを確認してください。

Server.start(Server.http, { resources: @static_resource_directory("resources") })

上記は、リソースディレクトリ(HTMLを含む)のコンテンツを静的に提供する完全なOpaプログラム(S4スタイル)です。

より一般的なシナリオは、Opaのテンプレートメカニズム(HTMLの大きなサブセットを受け入れるマークアップ)を使用することです。

お役に立てば幸いです。

于 2011-12-13T17:09:45.293 に答える