صفحات 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 فستجد فيها تعليقا يخبرك أن هذه الصفحة منتجة آليا وينصحك بألا تعدل أي شيء فيها.
وستجد أن جملة الشرط مكتوبة باستخدام التاج 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 واختباره جيدا.
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.