المتابعون للمدونة

الاثنين، 15 أبريل 2019

صفحات ZML في مشروع عملي


صفحات ZML في مشروع عملي 

هذا مشروع تعليمي مفيد كتبته ميكروسوفت بلغة سي شارب C# كمثال عملي على استخدام ASP.NET MVC Core 2.2، وهو يتكون من ثلاثة مشاريع فرعية، اثنان منها مجرد مكتبة كود تنتج ملفين من النوع dll لاستخدامهما في أداء وظيفة المشروع الثالث (المسمى web) وهو مشروع ASP.NET المسئول عن إنشاء موقع الويب.. ستجد في الموقع رابطا لتنزيل كتاب pdf بالإنجليزية يتكون من 79 صفحة يشرح المشروع!
 

وقد قررت أن أستخدم هذا المشروع لتجربة صفحات ZML الجديدة الخاصة بي، فحولت المشروع Web إلى كود فيجوال بيزيك واسميته eShopOnWeb.zml، وتركت المشروعين الآخرين بسي شارب لأني لا أملك وقتا لتحويلهما حاليا، ولا مشكلة في هذا، فمن الممكن أن تحتوي مجموعة المشاريع Solution على مشاريع فرعية بلغات مختلفة، فملفات dll الناتجة عن مشاريع سي شارب تصلح للعمل في مشاريع فيجوال بيزيك بشكل طبيعي.. هذه هي نسختي من المشروع.
 
ملحوظة:
يمكن استخدام صفحات zml في مشاريع سي شارب بنفس الطريقة التي سأشرحها هنا.. فكما قلت: هذه الصفحات لا تعتمد على لغة برمجة معينة. 

بعد هذا، كان عليّ أن أحول تصميم الصفحات من كود cshtml إلى كود zml.. هذه مهمة ستحتاج وقتا، لهذا لم أحول حتى الآن سوى أربع صفحات، ثلاث منها موجودة في المجلد Pages وهي:
1- Index.zml
2- Privacy.zml
3- Error.zml
والرابعة موجودة في المجلد:
Pages\Shared\Components\BasketComponent
وهي:
4- Default.zml
لكي تفتح هذه الصفحات في فيجوال ستديو، حددها في متصفح المشاريع، واضغط زر الفأرة الأيمن، ومن القائمة الموضعية اضغط OpenWith.. في النافذة التي ستظهر حدد HTML Editor واضغط الزر "Set as default" ثم اضغط OK.

لو نظرت إلى الصفحة Index.zml فلن تجد فيها أي كود فيجوال بيزك أو كود سي شارب، بل تحتوي فقط على تيجان HTML وبعض تيجان XML الجديدة التي تمثل عناصر Razor.
وستجد أن جملة الشرط مكتوبة باستخدام التاج if وحلقة الدوران مكتوبة بالتاج foreach وكل ما يفعله Vazor هو ترجمة صفحات zml إلى صفحات cshtml في بداية تشغيل البرنامج، لهذا لو فتحت الصفحة Index.cshtml فستجد فيها تعليقا يخبرك أن هذه الصفحة منتجة آليا وينصحك بألا تعدل أي شيء فيها.

 
ولكي تتم ترجمة الصفحات، كل ما عليك فعله هو إضافة السطر التالي في الوسيلة Startup.Configure في الملف Startup.vb:
Vazor.ZmlPages.Compile( )
حيث تقوم الوسيلة Compile بالبحث في كل مجلدات المشروع عن الملفات من النوع zml وتترجمها إلى ملفات cshtml.. وإن كانت ملفات chtml موجودة من قبل، يتم فحص تاريخ آخر تحديث لها، فإن كان أقدم من آخر تحديث للملف.zml الأصلي فهذا معناه أنك أجريت تعديلات فيه، ومن ثم تعاد ترجمته لتحديث صفحة cshtml.
بعد هذا ليس مطلوبا منك أي شيء.. باقي الكود يسير على نفس قواعد مشاريع Razor العادية، فهي تتعامل بشكل طبيعي مع ملفات cshtml التي أنتجناها لها.. كل ما عليك هو كتابة الكود في صفحات zml وستعمل بشكل سحري!
ويمكنك التعرف على أهم التيجان الخاصة بكود zml من هنا، مع ملاحظة أنك تستطيع استخدام @ بنفس القواعد المعمول بها في Razor.
ما زلت أطور هذه التقنية، لهذا لن أنشئ قالبا لمشاريع zml حاليا.. ويمكن لمبرمج سي شارب إنشاء مشروع MVC او Razor Pages بشكل عادي، ثم إضافة ملف جديد (وليكن من النوع txt) ثم تغيير امتداده إلى .zml واختيار Open With بالطريقة التي وضحتها.
أما مبرمج فيجوال بيزيك، فيمكنه إنشاء مشروع جديد باستخدام أحد قوالب Vazor التي أنشأتها من قبل، لكن عليه أن يحذف الجزء الخاص بتشغيل محرك الملفات الافتراضية.. احذف هذا الكود من نهاية كود الوسيلة ConfigureServices في الملف Startup.vb:

services.Configure(Of RazorViewEngineOptions)(

                 Sub(options) options.FileProviders.Add(New Vazor.VazorViewProvider( ))

           )

ثم احذف ملفا vbxm.vb و vazor.vb من المشروع وكذلك الكود الذي يسجل الصفحات في الخريطة (ستصل إليه بمجرد محاولة تشغيل البرنامج، لأنه سيسبب خطأ بعد حذف ملفات vazor).
أخيرا، أضف ملفا نصيا جديدا وغير امتداده إلى zml واكتب فيه كود تصميم الصفحة.
سأوفر بإذن الله قوالب zml لكن بعد أن إكمال مترجم zml واختباره جيدا.

 

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

صفحة الشاعر