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