Eliom เป็นกรอบสำหรับการสร้างเว็บไคลเอนต์/เซิร์ฟเวอร์และแอพพลิเคชั่นมือถือใน OCAML
มันสามารถใช้ทั้งสองเป็นเฟรมเวิร์กฝั่งเซิร์ฟเวอร์แบบดั้งเดิมหรือเพื่อใช้แอปพลิเคชันไคลเอนต์เซิร์ฟเวอร์ที่ซับซ้อน
Eliom แปลง OCAML เป็นภาษาที่หลากหลายทำให้สามารถใช้ทั้งเซิร์ฟเวอร์และส่วนไคลเอนต์ของเว็บและแอพมือถือเป็นโปรแกรมเดียว
สิ่งนี้ทำให้การสื่อสารระหว่างเซิร์ฟเวอร์และไคลเอนต์ง่ายขึ้นมาก แอปพลิเคชันสามารถทำงานบนเว็บเบราว์เซอร์หรืออุปกรณ์มือถือ (iOS, Android) ได้รับการบันทึกจากความต้องการในการพัฒนาหนึ่งเวอร์ชันสำหรับแต่ละแพลตฟอร์ม
ELIOM มีการสนับสนุนสำหรับหน้าปฏิกิริยา (สร้างขึ้นบนเซิร์ฟเวอร์หรือไคลเอนต์) กลไกเซสชันขั้นสูงการสื่อสารเซิร์ฟเวอร์ไปยังไคลเอนต์การเขียนโปรแกรมเว็บตามความต่อเนื่อง ฯลฯ
Eliom เป็นส่วนหนึ่งของโครงการ Ocsigen
opam install eliom
การกำหนดบริการบน Path /foo รับพารามิเตอร์ใด ๆ :
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 (ค่าทั่วโลกสำหรับเซิร์ฟเวอร์ทั้งหมด) การอ้างอิงของ Eliom นั้นมีอยู่อย่างต่อเนื่องหากคุณเพิ่มพารามิเตอร์เสริม ~persistent ให้กับฟังก์ชัน Eliom_reference.eref เอกสารเพิ่มเติมที่นี่
เขียนเว็บและแอปพลิเคชันมือถือแรกของคุณด้วย Eliom โดยใช้ Ocsigen Start