Eliom adalah kerangka kerja untuk membangun aplikasi web dan seluler klien/server di OCAML.
Ini dapat digunakan baik sebagai kerangka kerja web sisi server tradisional atau untuk menerapkan aplikasi klien-server yang kompleks.
Eliom mengubah OCAML menjadi bahasa multi-tier, memungkinkan untuk mengimplementasikan bagian server dan klien dari aplikasi web dan seluler sebagai program tunggal.
Ini sangat menyederhanakan komunikasi antara server dan klien. Aplikasi dapat berjalan di browser web atau perangkat seluler apa pun (iOS, Android), menyimpan dari kebutuhan untuk mengembangkan satu versi untuk setiap platform.
Eliom memiliki dukungan untuk halaman reaktif (dihasilkan di server atau klien), mekanisme sesi lanjutan, server ke komunikasi klien, pemrograman web berbasis kelanjutan, dll.
Eliom adalah bagian dari proyek OCSIGEN.
opam install eliom
Mendefinisikan Layanan di Path /foo , Mengambil Parameter Dapatkan:
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 " ]])))Memasukkan tautan ke layanan itu, dengan parameter:
Eliom_content.Html.D. a ~service: myservice [txt " Home " ] [( " param1 " , " v1 " ); ( " param2 " , " v2 " )]Penangan acara ditulis dalam OCAML:
div ~a: [a_onclick [ % client ( fun ev -> ... )]] [ ... ]Sisi sisi klien dan server ditulis sebagai satu program:
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 *)Menggunakan nilai sisi server dalam kode sisi klien:
let % server a = ...
let % client f () =
print_endline ~% a ; (* print in browser console *)
...Memanggil fungsi server dari program klien:
let % rpc f (x : int ) : string Lwt. t = ... (* server-side code *)
let % client () =
let % lwt r = f 4 in
...Menyimpan data sesi di server menggunakan referensi 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 );
...
Dimana lingkup bisa:
Eliom_common.default_session_scope (nilai berbeda untuk setiap browser),Eliom_common.default_process_scope (nilai berbeda untuk setiap tab),Eliom_common.default_group_scope (nilai berbeda untuk setiap pengguna),Eliom_common.site_scope (nilai untuk seluruh situs),Eliom_common.global_scope (nilai global untuk seluruh server). Referensi Eliom tetap ada jika Anda menambahkan parameter opsional ~persistent untuk berfungsi Eliom_reference.eref . Lebih banyak dokumentasi di sini.
Tulis aplikasi web dan seluler pertama Anda dengan Eliom menggunakan Ocsigen Start