اذهب إلى المحتوى

مدخل إلى محرك القوالب تويغ Twig


محمد النحاس3

لا نهدف في هذه المقالات إلى ترجمة الموقع الرسمي لمحرك قوالب Twig والتي تجدها في موسوعة حسوب، توثيق Twig، لكننا نهدف إلى توليد فهم عميق وبسيط لهذه التقنية يمكنك من الاستفادة القصوى منها، بحيث يكون مفيدًا للمبتدئين وممتعًا للمتقدمين.

مفهوم محرك القالب وعمله

معالج القوالب المعروف أيضًا باسم محرك القوالب template engine، هو وسيلة لأتمتة إنشاء المستندات بما في ذلك صفحة الويب، حيث تسمح أنظمة الأتمتة بتقليل إدخال البيانات إلى الحد الأدنى، وكذلك تقليل الوقت الذي يستغرقه إنشاءها أو تعديلها، وتقليل المخاطر المرتبطة بالخطأ البشري.

من أهم الفوائد الناتجة عن استخدام محرك القالب هو جعل جملة من المستندات أو صفحات الويب ضمن فئة واحدة بحيث يؤدي تعديل القالب إلى تعديل كامل المستندات المنسقة المرتبة به.

كما يمكن أن نعرف محرك القوالب الخاص بصفحات الويب على أنه أسلوب يمنح المطورين القدرة على فصل HTML / CSS عن الكود المنطقي للتطبيق لصفحة ويب مثلًا كود PHP.

لتوضيح الصورة عن عمل محرك القالب، لنفرض أن لدينا عشرة طلاب نريد أن نرسل لكل منها رسالة ترحيب على النحو التالي:

اقتباس

مرحبا بالطالب المجد {{ name }}

  1. نسمي العبارة السابقة بالقالب
  2. نسمي أسماء الطلاب المتمثلة بالحقل name بالبيانات
  3. أما عبارات الترحيب الناتجة فهي المستند المنسق وأخيرًا فإن محرك القالب هو البرنامج الحاسوبي الذي قام بدمج القالب السابق مع البيانات والتي هي أسماء الطلاب في مثالنا حيث يتم استبدال اسم الطالب في موضعه حسب الحاجة.

ناتج القالب السابق إن كان لدينا قائمة باسمي طالبين ما يلي:

  • مرحبا بالطالب المجد سامر
  • مرحبا بالطالب المجد زياد

وهكذا بحيث يختلف الاسم تبعا لبيانات المقدمة للقالب.

اقتباس

عمل محرك القالب: بيانات + قالب ⇐ مستندات منسقة

أشهر محركات القوالب المستخدمة في برمجة صفحات الويب

لا ينحصر مجال عمل محركات القالب في الويب، وفي الواقع يمكن أن تشمل أي نص أو رسم يمكن توليده وتنسيقة سواء كانت صفحة كتاب أو إعلان بسيط.

تؤمن لغة البرمجة بي إتش بي PHP آليات سهلة لمعالجة القوالب حيث يمكن كتابة القالب بلغة PHP على النحو التالي مثلًا:

Hello student <?php echo  $student; ?>

بالرغم من كون PHP تؤمن خصائص محرك القالب إلا أنها من النادر أن تستخدم لهذا الغرض من قبل المبتدئين وينحصر استخدامها من قبل من يتقن تلك اللغة.

لقد تنوعت التقنيات وتقدمت كثيرا ويوجد الكثير من محركات القوالب سوف نذكر أشهر محركات القوالب:

  • سمارتي Smarty: محرك قالب شهير سهل التركيب مكتوب بلغة PHP وهو يأتي في المرتبة الثانية بعد تويغ من حيث شيوع الاستخدام
  • بليت Plates: محرك قالب له طريقة كتابة معقدة بعض الشيء وهو أقل قابلية للقراءة من قبل المبتدئين
  • فولت Volt: محرك قالب مكتوب بلغة سي وطريقة كتابة القالب به تشبه تويغ
  • تويغ Twig محرك قالب سريع ومرن وشائع جدا مكتوب بلغة بي اتش بي

الفرق بين محرك القالب والقالب ولغة القالب

نود أن نوضح شيئا مهما يوضح الفرق بين المفاهيم المتداخلة، محرك القالب والقالب ولغة القالب:

  • محرك القالب templating engine هو برنامج كتبته الشركة التي صممت محرك القالب ويمكن تحميله من الموقع الرسمي للشركة.
  • القالب template هو أوامر التنسيق أو الإخراج التي التي نكتبها نحن ونقدمها إلى محرك القالب مثلا الملف single.twig يدعى قالب.
  • لغة القالب template syntax فهي طريقة الكتابة التي يطلب منا محرك القالب الالتزام بها ليفهم ما نكتبه. أي القواعد التي علينا مراعاتها عند كتابة القالب مثلا طريقة اخراج المتغيرات وطريقة استدعاء الدوال والمرشحات وغيرها من التقنيات التي يوفرها القالب مثلا يمكن القول بأن لغة القالب فولت تشابه كثيرا لغة القالب تويغ.

لكل محرك قالب طريقة خاصة به لكتابة القوالب عادة تسمى باسم محرك القالب نفسه ونحن هنا لا نقصد لاحقة الملف بل نقصد طريقة الكتابة ضمن الملف نفسه أي template syntax.

تعريف تويغ Twig ومزاياه

يُعَدّ تويغ Twig محرك قالب مجاني، مفتوح المصدر، سريع، آمن، مرن وسهل التعلم وهو مبني على لغة PHP ويتم استخدامه بشكل أساسي لإخراج صفحات HTML، ولكن يمكن استخدامه أيضًا لإخراج أي تنسيق نصي آخر. ويعتبر تويغ Twig مكون مستقل يمكن دمجه بسهولة في أي مشروع PHP، ويتمتع تويغ Twig بالمزايا التالية:

السرعة

قد يتبادر إلى الذهن أن استعمال قوالب تويغ Twig سوف يبطئ صفحة ويب مقارنة باستخدام PHP لكن في الواقع هذا غير صحيح لأن تويغ يقوم يتصريف أو ترجمة القالب إلى لغة بي إتش بي ثم ينفذ الكود الناتج مباشرة. لا يكتفي تويغ بترجمة الكود إلى PHP بل يقوم بعدد من عمليات تحسين صياغة الكود بهدف زيادة السرعة في التنفيذ.

الحفاظ على البيانات

عندما يستخدم مصمم السمة أو pack end تويغ فإنه يمكن من المسؤول عن شكل الموقع أو front end أن يقوم هو بتعديل القوالب حسب ما يراه مناسبا دون المخاطرة بالبيانات حيث أن التعليمات المكتوبة في قوالب تويغ تكون آمنة وهي تستخدم لقراءة البيانات وإظهارها وليس لتعديلها

لا للتعليمات الخطرة والأخطاء الحرجة

يمنحك تويغ أمانا إضافيا مقارنة باستخدام PHP مباشرة حيث أن التعليمات المتاحة في قوالب تويغ لا يمكنها أن تتسبب في انهيار الموقع.

هل توقف موقعك عن العمل نتيجة كود بي اتش بي خاطئ؟ يحتوي Twig على وضع صندوق الاختبار (Sandbox) من أجل تقييم شيفرات القوالب غير الموثوق بها قبل تنفيذها.

شيوع الاستخدام

عندما نتعلم تقنية ما فمن المهم أن نكون قادرين على استخدامها في مجالات شتى وهذا يؤمنه تويغ بسهولة فهو مستخدم في الكثير من المشاريع مفتوحة المصدر والكثير من أطر العمل على سبيل المثال: Symfony وDrupal8 وphpBB وLaravel. بالإضافة إلى إمكانية استخدامه في تصميم قوالب وردبرس وهذا ما سوف نتطرق له كمثال عملي لاحقا

المرونة ودعم الوراثة

يتمتع تويغ بالمرونة حيث أنه من السهولة توسيع عمل تويغ وإضافة فلاتر أو دوال له كما يدعم الوراثة فإذا كان لدينا قالبان متشابهان فيمكن أن لا نحتاج كتابة كلا القالبين يكفي أن نكتب أحدهما ثم نكتب الفروق في القالب الثاني بحيث يمكن أن يكون القالب الابن مجرد تعديل بسيط للقالب الأب.

مقارنة بين تويغ ومحركات القوالب الأخرى

سوف نقوم بمقارنة محركات القالب من حيث سهولة الاستخدام وشيوع محرك القالب وسرعة التنفيذ

سهولة القراءة والتعلم

يحتل تويغ و فولت المنزلة الأولى في سهولة القراءة حيث أن لهما ذات المعايير في كتابة القالب يليه سمارتي وأخيرا PHP وبليت وكمثال عن طريقة إخراج متغير:

{# Twig #}
{{ name }} 
volt
{# volt #}
{{ name }}
smarty
{* smarty *}
{$name} 
<?php echo $name; ?>
<!-- plate -->
Hello <?=$this->e($name)?>

كلما كان بناء القالب بسيطا وأقرب إلى اللغة العامة كانت سهولة العلم أسرع وكما نلاحظ من المثال أعلاه فنلاحظ أن استخدام تويغ لا يتطلب إضافة أحرف خاصة لـ اسم المتغير على عكس باقي محركات القالب.

الاستخدام الشائع بين المطورين

بهدف اختبار شيوع استخدام كل من محركات القالب الثلاث، فقد تمت موازنة ترتيب أليكسا للموقع الرسمي لكل من محركات القالب باستثناء PHP؛ أما بالنسبة إلى PHP، فإن شهرتها باعتبارها لغة برمجة تجعل ترتيب موقعها في أليكسا لا يعطي انطباعًا صحيحًا عن مدى شهرتها كمحرك قالب يقيم إليكسا المواقع بالاعتماد على مدى شيوعها وعدد الزوار شهريا للموقع فمثلا يحتل غوغل الرقم 1، وكلما كان عدد زوار الموقع أكبر كان ترتيب الموقع أقل وبمعنى آخر هناك 56000 ألف موقع تتفوق على سمارتي من حيث عدد الزوار أما بالنسبة لموقع تويغ الرسمي فهناك 13000 موقع فقط تتفوق عليه من حيث عدد الزوار أما تقيم alexa فأن الموقع الرسمي لـ تويغ يحتل فهر يسبق جميع محركات القالب المذكورة حيث كان 13000 بينما يحتل سمارتي المركز الثاني 56000. في المنزلة قبل الأخيرة تأتي فولت بتقييم 127000 أما محرك القالب بلوت فكان له التريب التالي في إليكسا وهو أقل محركات القوالب السابقة شيوعا بتقييم 1,600,000.

السرعة عند الاستخدام

تقوم محركات القالب بتوليد شيفرة PHP مقابل للقالب ثم تقوم تنفيذ الشفرة الناتجة مما يجعل سرعة الأداء متقاربة.

لقد تم الرجوع إلى الموقع المختص بمقارنة الأداء phpbenchmarks.com فكانت سرعة الإصدار الأخير من محركات القالب الشهيرة متقاربة جدا عند عند استخدامها مع الإصدار 7.3 من PHP.

سهولة التركيب

في هذه النقطة تتفوق سمارتي Smarty على Twig حيث يتم تركيب سمارتي بصفته مكون مستقل أما تويغ طريقة تنصيبه الرسمية تتضمن استعمال composer وعادة ما يكون جزءًا من مشروع آخر . لكن في المقال التالي سوف نقوم بتقديم طريقة سهلة لتركيب تويغ بشكل مستقل وبدون استخدام composer بحيث يصبح الفرق أقل أهمية. أما PHP فهي لا تحتاج إلى أي تركيب حيث تكون ممكنة مسبقًا على مختلف مواقع الويب المبنية فيها.

كلمة أخيرة

تتنوع محركات القوالب كثيرا و في العصر الحالي تحتل الإنتاجية وسرعة الأداء أهمية بالغة وهذا ما يوفره Twig، كما يسهل استخدام Twig الحصول على كود نظيف واضح وبسيط يسهل صيانتها عند الحاجة. بحيث نركز في القالب على الشكل العام للمستند المنسق وعلى بناء المستند.

لقد تطرقنا في هذا المقال إلى مدخل سريع عن تويغ وتم بيان عدد من مزاياه مثل السرعة والحفاظ على البيانات وغيرها كما أجرينا مقارنة بين عدد من محركات البحث وفي النهاية قمنا بشرح الفرق بين محرك القالب والقالب ولغة القالب وفي المقال الثاني سوف نقوم بانطلاقة سريعة مع تويغ تهدف إلى تعريفنا بمتطلبات العمل وبطريقة تثبيت تويغ مع لمحة سريعة عن طريقة استخدامه.


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...