سؤال

في Grails، هناك آليتان للنمطية في طبقات العرض: نموذج و TagLib.

أثناء كتابتي لتطبيق Grails الخاص بي، غالبًا ما أواجه نفس السؤال عندما أحتاج إلى كتابة مكون واجهة المستخدم: هل أحتاج إلى استخدام قالب أو TagLib؟

وبعد البحث في النت لم أجد الكثير أفضل الممارسات أو القواعد الأساسية المتعلقة بقرار التصميم هذا، فهل يمكنك مساعدتي وإخباري:

  1. ما هو الفرق الرئيسي بين الآليتين؟
  2. في أي السيناريوهات، هل تستخدم TagLib بدلاً من القالب (والعكس صحيح)؟
هل كانت مفيدة؟

المحلول

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

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

  • على الجانب الآخر، taglibs هي وحدة أصغر من الوظائف، ولكن من المرجح أن تستخدمها في العديد من الأماكن.من المحتمل أن تقوم بتسلسل السلاسل فيه، لذلك إذا كنت تتطلع إلى إنشاء مائة سطر من HTML، فهي أقل ملاءمة.الميزة الرئيسية التي تسمح بها العلامات المميزة هي القدرة على إدخال/التفاعل مع الخدمات.على سبيل المثال، إذا كنت بحاجة إلى جزء من التعليمات البرمجية الذي يستدعي خدمة مصادقة ويعرض المستخدم الحالي، فيمكنك القيام بذلك فقط في TagLib.لا داعي للقلق بشأن تمرير أي شيء إلى taglib في هذه الحالة - سوف يذهب taglib ويكتشفه من الخدمة.من المحتمل أيضًا أن تستخدم ذلك في العديد من الصفحات، لذلك يكون من الملائم أكثر أن يكون لديك taglib لا يحتاج إلى معلمات.

  • هناك أيضًا عدة أنواع من taglibs ، بما في ذلك تلك التي تسمح لك بالتكرار على شيء ما في الجسم ، ولديها مشروط ، وما إلى ذلك - هذا غير ممكن حقًا مع القوالب.كما قلت أعلاه ، يمكن استخدام مكتبة Taglib المصنوعة جيدًا لإنشاء واجهة برمجة تطبيقات قابلة للاستخدام تجعل رمز نظام الأفضليات المعمم أكثر قابلية للقراءة.داخل نفس *taglib.groovy، يمكن أن يكون لديك تعريفات متعددة للعلامات، وهذا فرق آخر - يمكنك تجميعها جميعًا في مكان واحد، والاتصال من taglib إلى آخر.

ضع في اعتبارك أيضًا أنه يمكنك استدعاء قالب من داخل taglib، أو يمكنك استدعاء taglib داخل القوالب، حتى تتمكن من المزج والمطابقة حسب الحاجة.

آمل أن يوضح لك هذا الأمر قليلاً، على الرغم من أن الكثير من هذا هو ما هو البناء الأكثر ملاءمة للتعليمات البرمجية وعدد مرات إعادة استخدامه.

نصائح أخرى

بالنسبة لنا...

من المفترض أن يرى المبرمج منطق عرض كائن معين في القالب، وليس في أي مكان آخر.

نحن نستخدم taglibs فقط لعناصر الصفحة المعزولة، ولا تتعلق بمنطق الأعمال على الإطلاق.في الواقع، نحن نحاول تقليل استخدامها:من السهل جدًا كتابة منطق العمل في taglib.

القوالب هي الطريقة التقليدية؛على سبيل المثال، فهي تدعم التخطيطات (راجع للشغل، يمكن تسميتها بآلية ثالثة)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top