سؤال

لقد كنت أفكر في حل templating ، على الرغم من اختياراتي بين Mako و Genshi. أجد templating في Genshi قبيح بعض الشيء ، لذلك أنا تحول أكثر نحو ماكو.

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

ألن يكون هناك ما يكفي دون وجود رمز ثعبان مضمن؟

هل كانت مفيدة؟

المحلول

كما ماكو الصفحة الرئيسية تشير إلى أن مزايا Mako واضحة تمامًا: سريع بجنون ، مألوف على الفور لأي شخص مفيد مع Python من حيث بناء الجملة والميزات.

يختار Genshi "التفسير" بدلاً من توليد رمز Python قبل الوقت (وفقًا لما ذكرته التعليمات, ، هذا من أجل وضوح رسائل الخطأ) ونهج "طول الذراع" في Python (على سبيل المثال باستخدام XPath للمحددات ، xinclud .

إذن ما هو "جمهورك"؟ إذا كانت مبرمجي Python ، أقترح Mako (للسرعة والألفة) ؛ إذا كان خبراء XML غير مرتاحين لـ Python ، فقد يكون Genshi مناسبًا بشكل أفضل (لنهج "Arm's Length from Python" ومتطابقة أقرب إلى ثقافة XML).

لقد ذكرت "The Malday Joe" ، لكن Joe لا يعرف Python و Xpath هو لغز مظلم عميق بالنسبة له ؛ إذا كان هذا هو جمهورك حقًا ، فقد تكون أنظمة templating الأخرى مثل Django مناسبة بشكل أفضل (ساعده في تجنب التعرض للمشاكل ؛-).

نصائح أخرى

ألن يكون هناك ما يكفي دون وجود رمز ثعبان مضمن؟

فقط إذا كانت لغة التحول الخاصة بك لديها وظائف منطقية كافية أنها لغة برمجة في حد ذاتها. عند هذه النقطة ، قد تكون قد استخدمت Python.

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

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

يبدو أن هذه قضية دينية. قوالب Django تأخذ خطًا صلبًا: لا يوجد رمز في القوالب. يفعلون ذلك بسبب تاريخهم كنظام يستخدم في المتاجر حيث يوجد فصل واضح بين أولئك الذين يكتبون التعليمات البرمجية وأولئك الذين يقومون بإنشاء صفحات. الآخرين (ربما أنت) لا يميزون مثل هذا التمييز الواضح ، وسيشعرون بمزيد من الراحة في وجود خط أكثر مرونة بين التخطيط والمنطق.

انها حقا تأتي إلى مسألة ذوق.

تم تصميم Genshi (اقرأ: منحازة ، محسّنة) لتوليد مستندات XML (حتى لو كانت تقدم الدعم لتوليد أي نوع من المستندات النصية). تم تصور قوالب ماكو وجانغو نص عام نظام templating. إيفوك أيضًا ، ولكن مع اختلاف أساسي واحد يجعل اختيار التصميم للسماح فقط للبيثون التعبيرات في القوالب أي لا بيثون صياغات.

إحدى النتائج الصافية المهمة لذلك هي أن Evoque قادر على تنفيذ تقييم القالب في صندوق رمل-أي يمكنك إعطاء المستخدمين غير الموثوق بهم بأمان وصول إلى رمز مصدر القالب-وهي ميزة مستحيلة تقريبًا لمحركات القالب التي تسمح أيضًا بالتضمين من بيانات بيثون. أوه ، وعلى الرغم من عدم فقدان أي شيء في مقارنة ميزة مباشرة ، فإن Evoque هو في بعض الحالات أسرع من Mako ، كما أنه يعمل على Python 3.

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

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