eliom
11.1.1
ELIOMは、OCAMLにクライアント/サーバーWebおよびモバイルアプリケーションを構築するためのフレームワークです。
従来のサーバー側のWebフレームワークとして、または複雑なクライアントサーバーアプリケーションを実装するために使用できます。
EliomはOCAMLをマルチ層言語に変換し、Webおよびモバイルアプリのサーバーとクライアントの両方の部分を単一のプログラムとして実装することを可能にします。
これにより、サーバーとクライアントの間の通信が大量に簡素化されます。アプリケーションは、任意のWebブラウザーまたはモバイルデバイス(iOS、Android)で実行でき、各プラットフォームに1つのバージョンを開発する必要性から節約できます。
Eliomは、リアクティブページ(サーバーまたはクライアントで生成された)、高度なセッションメカニズム、サーバーからクライアント通信、継続ベースのWebプログラミングなどをサポートしています。
EliomはOcsigenプロジェクトの一部です。
opam install eliom
Path /fooでサービスを定義し、Get Parametersを取得します。
let myservice =
Eliom_service. create
~path: ( Eliom_service. Path [ " foo " ])
~meth: ( Eliom_service. Get ( Eliom_parameter. any))
()
let () =
Eliom_registration.Html. register ~service: myservice
( fun get_params () ->
Lwt. return
Eliom_content.Html.F. (html (head (title (txt " " )))
(body [h1 [txt " Hello " ]])))パラメーターを使用して、そのサービスへのリンクを挿入します。
Eliom_content.Html.D. a ~service: myservice [txt " Home " ] [( " param1 " , " v1 " ); ( " param2 " , " v2 " )]イベントハンドラーはOCAMLで書かれています:
div ~a: [a_onclick [ % client ( fun ev -> ... )]] [ ... ]クライアント側とサーバーの側面は、単一のプログラムとして書かれています。
let % server a = ... (* code for the server part of the application *)
let % client b = ... (* code for the client part of the application *)
let % shared c = ... (* code that will be included in both parts *)クライアント側のコードでサーバー側の値を使用する:
let % server a = ...
let % client f () =
print_endline ~% a ; (* print in browser console *)
...クライアントプログラムからサーバー関数を呼び出す:
let % rpc f (x : int ) : string Lwt. t = ... (* server-side code *)
let % client () =
let % lwt r = f 4 in
...ELIOM参照を使用してサーバー上のセッションデータを保存します。
let % server r = Eliom_reference. eref ~scope: Eliom_common. default_session_scope 0
let % server f () =
let % lwt v = Eliom_reference. get r in
Eliom_reference. set r (v + 1 );
...
範囲がある場合:
Eliom_common.default_session_scope (各ブラウザの値が異なる)、Eliom_common.default_process_scope (各タブの値が異なる)、Eliom_common.default_group_scope (ユーザーごとに異なる値)、Eliom_common.site_scope (サイト全体の値)、Eliom_common.global_scope (サーバー全体のグローバル価値)。 Optionalパラメーターを追加すると~persistent Eliom_reference.erefを追加する場合、eliom参照は永続的です。 こちらの詳細。
Ocsigen Startを使用してEliomを使用して最初のWebおよびモバイルアプリケーションを書く