مقدمة إلى Marko
Marko هي مكتبة JavaScript مفتوحة المصدر تم تطويرها وتستخدمها eBay لبناء واجهات مستخدم ديناميكية وسريعة. تم تصميمها من الألف إلى الياء مع التركيز على الأداء، وذلك من خلال تقنيات مثل الترجمة المسبقة (Compilation) والتحميل التدريجي (Progressive Hydration). تُعتبر Marko فريدة لأنها تجمع بين بساطة الكتابة وسرعة التنفيذ، حيث يتم تحويل القوالب إلى JavaScript فعال أثناء البناء. يمكن استخدامها لإنشاء تطبيقات صفحة واحدة (SPA) أو مواقع متعددة الصفحات (MPA)، وهي تدعم التكامل مع أطر عمل أخرى مثل React .
المزايا والعيوب
المزايا (Pros)
- أداء استثنائي بفضل الترجمة المسبقة (Compilation)
- تحميل تدريجي (Progressive Hydration) لتحسين سرعة التحميل
- صيغة كتابة تشبه HTML ومألوفة للمطورين
- مدعوم من eBay ويستخدم في بيئات إنتاجية كبيرة
العيوب (Cons)
- مجتمع أصغر مقارنة بـ React أو Vue
- منحنى تعلم مختلف قليلاً عن أطر العمل القائمة على Virtual DOM
- قد يكون من الصعب إيجاد موارد تعليمية متقدمة
المميزات الرئيسية
- أداء عالي: يتم ترجمة القوالب إلى JavaScript مُحسَّن، مما يضمن أداءً فائقًا وسرعة في التحميل.
- تحميل تدريجي (Progressive Hydration): يقوم بتحميل المكونات فقط عند الحاجة إليها، مما يقلل من وقت التفاعل الأولي (Time to Interactive).
- سهولة الاستخدام: بناء المكونات باستخدام صيغة تشبه HTML ومألوفة للمطورين، مما يقلل من منحنى التعلم.
- تكامل مرن: يمكن استخدامه مع Express.js أو بشكل مستقل، ويدعم التكامل مع أطر عمل أخرى.
التثبيت
💻 مثال لمكون تفاعلي مع المدخلات
class {
onCreate() {
this.state = { name: 'زائر', showGreeting: true };
}
handleInput(event) {
this.state.name = event.target.value;
}
toggleGreeting() {
this.state.showGreeting = !this.state.showGreeting;
}
}
<div>
<input type="text" value=state.name on-input('handleInput')/>
<button on-click('toggleGreeting')>تبديل التحية</button>
<if(state.showGreeting)>
<p>مرحباً، ${state.name}!</p>
</if>
</div>
🔗 روابط مفيدة
التصنيفات: تطوير الويب