Eliom ist ein Framework zum Erstellen von Client/Server -Web- und mobilen Anwendungen in OCAML.
Es kann sowohl als herkömmliches serverseitiges Web-Framework als auch als implementieren komplexe Client-Server-Anwendungen verwendet werden.
Eliom verwandelt OCAML in eine mehrstufige Sprache und ermöglicht es, sowohl die Server- als auch die Client-Teile einer Web- und mobilen App als einzelnes Programm zu implementieren.
Dies vereinfacht die Kommunikation zwischen Server und Client stark. Anwendungen können auf jedem Webbrowser oder mobilen Gerät (iOS, Android) ausgeführt werden, wodurch die Notwendigkeit gespeichert wird, eine Version für jede Plattform zu entwickeln.
Eliom unterstützt Reaktivseiten (auf Server oder Client generiert), erweiterter Sitzungsmechanismus, Server -zu -Client -Kommunikation, kontinuierliche Webprogrammierung usw.
Eliom ist Teil des OCSIGEN -Projekts.
opam install eliom
Definieren eines Dienstes auf Pfad /foo , Nehmen Sie alle erhaltenen Parameter:
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 " ]])))Einfügen eines Links zu diesem Dienst mit Parametern:
Eliom_content.Html.D. a ~service: myservice [txt " Home " ] [( " param1 " , " v1 " ); ( " param2 " , " v2 " )]Event -Handler sind in OCAML geschrieben:
div ~a: [a_onclick [ % client ( fun ev -> ... )]] [ ... ]Die Client-Seite und die Serverseite werden als einzelnes Programm geschrieben:
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 *)Verwenden eines serverseitigen Wertes im clientseitigen Code:
let % server a = ...
let % client f () =
print_endline ~% a ; (* print in browser console *)
...Aufrufen einer Serverfunktion aus dem Client -Programm:
let % rpc f (x : int ) : string Lwt. t = ... (* server-side code *)
let % client () =
let % lwt r = f 4 in
...Speichern von Sitzungsdaten auf dem Server mithilfe von Eliom -Referenzen:
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 );
...
Wo Umfang sein kann:
Eliom_common.default_session_scope (unterschiedlicher Wert für jeden Browser),Eliom_common.default_process_scope (unterschiedlicher Wert für jede Registerkarte),Eliom_common.default_group_scope (unterschiedlicher Wert für jeden Benutzer),Eliom_common.site_scope (Wert für die gesamte Site),Eliom_common.global_scope (globaler Wert für den gesamten Server). Eliom Referenzen sind anhaltend, wenn Sie optionaler Parameter hinzufügen ~persistent zur Funktion Eliom_reference.eref . Weitere Dokumentation hier.
Schreiben Sie Ihre erste Web- und mobile Anwendung mit Eliom mit Ocsichen Start