16

mustache ، هل جربها احدكم؟

  • uid0

mustache تعتبر بمثابة نظام لاستبدال المتغيرات بداخل نص معين او كما يسميها مطوروها بـ (Logic-less templates) هل جربها احدكم او استخدمها؟ علما بانها متوفرة على اغلب اللغة البرمجية.

حيث يوضح مثال عليها

http://mustache.github.io/#...

قدرة النظام على استبدال المتغيرات الموجودة بالنص بقيمها الفعلية التي يتم تمريرها عند طلب توليد النص.

مثال سريع:

عزيزنا {{cusname}}
نود باشعارك بانه تم شحن البضاعة في طلبك الذي يحمل رقم {{orderno}} ورقم التتبع هو {{trackno}} علما بانه يمكنك متابعة حالة الشحن على الرابط التالي
http://example.com/trackshi...

{{trackno}}

هذا النظام يفيد عند صياغة قوالب البريد او عند اظهار رسائل مخصصة للزائر او العميل.

فهل من تجربة فعلية لها وهل هناك اي صعوبات في استخدامها؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

13

بالعكس اعتبرها اداه جيدة، الصعوبات لا اعتقد لكن قد تحتاج لتغيير الأقواس المستخدمة لإدراج متغير في القوالب حيث أن الأقواس المعقوفة يكثر استخدامها في ادوات الـ Templating , مثل AngularJs , Django Templates, Jinja

مما يؤدي لتضارب في حال استخدمتها مع أحدهم. فتحتاج لتغييرها

Mustache.tags = ['[[', ']]'];

نعم كلامك صحيح واجهت هذه المشكلة فعلا في smarty واظطررت للتعديل على كود js الاصلي (mustache.js) كما تفضلت ، ولكن هل هناك طريقة لتعديل هذه ال tags دون الحاجة للتعديل على ملف الجافا سكربت الاصلي؟

لانها قد تمر السنوات وياتي تحديث ل Mustache وانسى انني عدلت على الملف فاستبدال الملف بالاصدار الجديد وعندها يتوقف النظام.

14

في رأيي التعديل على الملف الأصلي ممارسة ليست جيدة (في حالتك) ... بل أنها قد تحصل حين تنتهي من تطوير النظام Production stage و تبدء في استخدام ملفات جافاسكريبت مضغوطة

والأجدى أن تضع ذلك السطر في نظامك نفسه (لأن المشكل: سببه انك تستخدم محرك نماذج مشابه... وليس ان Mustache "لا يعمل")

فيكون السطر قبل استخادمك لـ Mustache.render مباشرة

 Mustache.tags = ['[[', ']]'];
 var output = Mustache.render("{{title}} spends {{calc}}", view);

جزاك الله كل خير

أعتذر لك ولمن تابع الموصوع عن تسرعي ... في البداية

كتبت ما خطر لي بنصحك بسبب ما واجهته قريبا بين AngularJS و Django واخطئت اني بحثت عن كيفية تغيير الفواصل واعتمدت على ذلك فضللت بإجابة في احد المواقع ... ولم اكلف خاطري ان ابحث ان كان ذلك متاحا ام لا وما ذكرته عن Mustache.tags غير صحيح وتبيني لذلك الآن ما أحرجني أشد الحرج ختى أني لا أجد ذلك المصدر الآن لأفهم كيف حصل هذا ... (ولو ان ماقلته عن التعارض صحيح ان كان لذلك أهمية)

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

شكرا لك لسوآلك الأخير بخصوص ماذكرته عن التعديل على الكود فهو ما نبهني لما حصل

ولا أجد طريقة لتصحيح ذلك غير الموجودة في التوثيق والاعتذار منك ومن الاخرين وتوضيح ماحصل ان كان لذلك أهمية

أن تضع في بداية النموذج الـ Template مايشبه الاسناد في لغات البرمجة

{{=<% %>=}}

ساتححق من ذلك بعد لحظات ، لانني فعلا وجدت الكود

{{=<% %>=}}

في كثير من الامكان يتحدثون عنها ولكن لم يوضحو اين تستخدم.

ما زلت اعاني من مشكلة في smarty حيث انها تستخدم {} وبما ان mustache تستخدم {{}} فان سمارتي تتعرف على الكود على انها سمارتي وتعطي خطا. صراحة هذا المضوضوع اتعبني قبل يومين والبحث عن mustache يعطي الكثير من النتائج ولكثير من اللغات منها روبي و بي اتش بي علما بانني استخدم mustache.js فقط.

المثال السابق لإستخدام <% %>

والمثال التالي لاستخدام [[ ]] بدون ان تكتب في الكود الاقواس التي تتسبب في التعارض "}}" باستخدام String.fromCharCode

اخ اسلام @IAli اشكرك كل الشكر على مساهمتك وعلى متابعتك للموضوع حتى اخر لحظة والحصول على الكود الذي يقوم بتغيير الفواصل في mustache لعدم تضاربها مع اداة تستخدم فكرة مشابهة ك smarty و Django ... والتالية هو الكود الذي اقترحته علي ادرجه هنا بعد اذنك

المثال التالي:

افادني فعلا في تغيير الفواصل في ملف جافا سكربت وهو مفيد كوني استخدمت قوالب سمارتي

والمثال التالي

يقوم بتغيير الفواصل كما هو مذكور حتى مع عدم كتابتها في الجافا سكربت نفسها والاستعاضة عنها ب String.fromCharCode كما تفضل الاخ اسلام.

وبهذا تكون قد حلت المشكلة من خلال التعاون.

YMMD :) ..

لم أسمع عنها من قبل، لذا سوف أقرأ عنها المزيد بمشيئة الله تعالي حينما تسمح الظروف.

شكراً علي مشاركة المعلومة.

لم اجربها من قبل ... ساقرأ عنها المزيد واجربها باذن الله .. شكرًا لك.

نعم أذكر أني تعاملت معها من قبل في تصميم احد قوالب GHOST

هذا النظام رائع جدا وبسيط