1. القواعد الأساسية
1. يتم استخدام "#" لتحديد عبارات البرنامج النصي للسرعة، بما في ذلك #set، #if، #else، #end، #foreach، #end، #iinclude، #parse، #macro، وما إلى ذلك؛
يحب:
#إذا($info.imgs)
<img src="http://VeVB.COm/ydmx_lei/blog/$info.imgs" border=0>
#آخر
<img src="http://VeVB.COm/ydmx_lei/blog/noPhoto.jpg">
#نهاية
2. يُستخدم "$" لتحديد كائن (أو يُفهم على أنه متغير)؛
مثل: $i، $msg، $TagUtil.options(...)، إلخ.
3. يتم استخدام "{}" لتحديد متغير السرعة بوضوح؛
على سبيل المثال، يوجد في الصفحة $someonename. في هذا الوقت، ستستخدم Velocity اسم شخص ما كاسم متغير. إذا أراد برنامجنا عرض حرف الاسم مباشرة بعد المتغير someone، فيجب تغيير التسمية أعلاه إلى ${someone . }اسم.
4. يتم استخدام "!" لفرض عرض المتغيرات غير الموجودة على أنها فارغة.
على سبيل المثال، عندما تحتوي الصفحة على $msg، إذا كان لكائن msg قيمة، فسيتم عرض قيمة msg. إذا لم يكن هناك كائن msg، فسيتم عرض حرف $msg على الصفحة. وهذا ما لا نريده. من أجل عرض المتغيرات غير الموجودة أو الكائنات التي تحتوي على قيم متغيرة فارغة على أنها فارغة، ما عليك سوى إضافة علامة "!" قبل اسم المتغير.
مثل: $!msg
2. أفضل الممارسات في EasyJWeb
من الناحية النظرية، يمكنك استخدام جميع البرامج النصية والوظائف الخاصة بـ Velocity في قالب EasyjWeb، لكننا لا ننصح باستخدام الكثير من تعبيرات البرامج النصية المعقدة في قالب الواجهة، وكملاذ أخير، لا تقم بإضافة أي منطق معقد إلى قالب الواجهة. ناهيك عن إضافة إعلانات متغيرة وعوامل منطقية وما إلى ذلك إلى قالب الواجهة.
في EasyJWeb، نقدم خمسة عبارات نصية أساسية للقوالب، والتي يمكنها بشكل أساسي تلبية متطلبات جميع قوالب التطبيقات. تعد بيانات القوالب الأربعة هذه بسيطة للغاية ويمكن لمصمم الواجهة إضافتها مباشرة. في العديد من ممارسات تطبيق EasyJWeb الحالية، نرى أنه لا يمكن تنفيذ سوى عبارات البرنامج النصي للقالب الأربعة البسيطة التالية بين جميع قوالب الواجهة:
1. يقوم $!obj بإرجاع نتيجة الكائن مباشرة.
على سبيل المثال: عرض قيمة رسالة كائن Java في علامة html. <p>$!الرسالة</p>
عرض قيمة كائن msg الذي تمت معالجته بواسطة كائن HtmlUtil في علامة html <p>$!HtmlUtil.doSomething($!msg)</p>
2. #if($!obj) #else #إنهاء بيان الحكم
على سبيل المثال: في العديد من تطبيقات EasyJWeb مفتوحة المصدر، غالبًا ما نرى أمثلة على رسائل المطالبة المنبثقة.
#إذا($msg)
<النص البرمجي>
تنبيه('$!msg');
</script>
#نهاية
البرنامج النصي أعلاه يعني أنه عند وجود كائن رسالة الكائن، سيتم إخراج المحتوى التالي مثل <script>.
3. #foreach( $info in $list) $info.someList #end Loops لقراءة الكائنات الموجودة في قائمة المجموعة ومعالجتها وفقًا لذلك.
على سبيل المثال: البرنامج النصي لقالب واجهة html لعرض المواضيع الشائعة على الصفحة الرئيسية للمنتدى لنظام المنتدى مفتوح المصدر EasyJF (0.3):
#foreach(معلومات $ في $hotList1)
<a href="/bbsdoc.ejf?easyJWebCommand=show&&cid=$!info.cid" target="_blank">$!info.title</a><br>
#نهاية
يشير البرنامج النصي أعلاه إلى أنه يتكرر عبر الكائنات الموجودة في مجموعة hotList1 ويخرج المحتوى ذي الصلة للكائن.
4. #macro(macroName)#end عبارة عن استدعاء دالة برنامج نصي (ماكرو) ولا يوصى باستخدامه على نطاق واسع في قوالب الواجهة.
على سبيل المثال: في مثال الإضافة والحذف والتعديل والاستعلام الذي تم إنشاؤه بسرعة باستخدام أدوات EasyJWeb، يمكنك النقر على شريط عنوان القائمة لعرض الترتيب التصاعدي والتنازلي. هذا هو محتوى القالب الذي نراه غالبًا في تطبيقات EasyJWeb لعرض حالة الفرز.
تعريف الوظيفة (الماكرو)، عادة ما يتم وضعه أولاً
#ماكرو (نوع orderPic $)
#إذا ($orderField.equals($type))
<img src="http://VeVB.COm/ico/${orderType}.gif">
#نهاية
#نهاية
المكالمة المحددة هي: <font color="#FFFFFF">title#orderPic("title")</font>
5. قم بتضمين الملف #inclue("اسم ملف القالب") أو #parse("اسم ملف القالب")
يُستخدم بشكل أساسي للتعامل مع الصفحات ذات المحتوى نفسه، مثل المحتوى العلوي أو السفلي لكل موقع ويب.
للتعرف على طرق الاستخدام، يمكنك الرجوع إلى التطبيقات في مدونة EasyJF مفتوحة المصدر ومنتدى EasyJF مفتوح المصدر!
مثل: #parse("/blog/top.html") أو #include("/blog/top.html")
الفرق بين التحليل والتضمين هو أنه إذا كانت هناك علامة برنامج نصي للسرعة في الملف المضمن، فسيتم تحليلها بشكل أكبر، بينما سيتم عرض التضمين كما هو.
3. حول استخدام #المجموعة
كحل أخير، لا تعلن بنفسك عن متغيرات البرنامج النصي Velocity في عرض الصفحة، أي استخدم #set بأقل قدر ممكن. في بعض الأحيان نحتاج إلى عرض الرقم التسلسلي على الصفحة، لكن كائن البرنامج لا يحتوي على سمة الرقم التسلسلي هذه، يمكنك تعريفه بنفسك. على سبيل المثال، في النظام الدوري، يكون كما يلي:
#مجموعة ($ط=0)
#foreach(معلومات $ في قائمة $)
الرقم التسلسلي: $i
#set($i=$i+1)
#نهاية
4. ملخص بناء جملة البرنامج النصي السرعة
1. البيان: #set ($var=XXX)
يمكن أن يحتوي الجانب الأيسر على المحتوى التالي
انسخ رمز الكود كما يلي:
مرجع متغير
سلسلة حرفية
مرجع الملكية
مرجع الطريقة
الرقم الحرفي #set ($i=1)
ArrayList #set ($arr=["yt1"،"t2"])
العوامل الحسابية
2. ملاحظة:
سطر واحد ##XXX
خطوط متعددة #* xxx
xxx
xxxxxxxxxxxx*#
نوع المراجع المراجع
3. المتغيرات
يبدأ بـ "$"، ويجب أن يكون الحرف الأول حرفًا. حرف متبوع بمعرف VTL (a .. z أو A .. Z).
يمكن أن تحتوي المتغيرات على الأحرف التالية:
أبجدي (أ .. ض ، أ .. ي)
رقمي (0 .. 9)
واصلة ("-")
الشرطة السفلية ("_")
4.الخصائص
$Identifier.Identifier
$user.name
قيمة الاسم في مستخدم قابل للتجزئة مشابه: user.get("name")
5. الطرق
الكائن user.getName() = $user.getName()
6. التدوين المرجعي الرسمي
استخدم {} لفصل أسماء المتغيرات عن السلاسل
يحب
#set ($user="csy"}
اسم ${المستخدم}.
إرجاع csyname
اسم المستخدم $
$!اسم المستخدم
الفرق بين $ و$!
عندما لا يتم العثور على اسم المستخدم، يُرجع $username السلسلة "$username"، ويُرجع $!username السلسلة الفارغة ""
7. علامات الاقتباس المزدوجة وعلامات الاقتباس
#set ($var = "helo")
اختبار "$var" يُرجع testhello
اختبار '$var' يُرجع اختبار '$var'
يمكنك تغيير طريقة المعالجة الافتراضية عن طريق ضبط stringliterals.interpolate=false
8. البيانات الشرطية
انسخ رمز الكود كما يلي:
#إذا( $فو )
<strong>السرعة!</strong>
#نهاية
#إذا($فو)
#elseif()
#آخر
#نهاية
يتم تنفيذه عندما يكون $foo فارغًا أو عندما تكون القيمة false لكائن منطقي.
9. العوامل المنطقية: == && ||!
10. بيان الحلقة #foreach($var in $arrays) // تحتوي المجموعة على الأنواع الثلاثة التالية من Vector أو Hashtable أو Array
#نهاية
#foreach( $product في $allProducts )
<li>$المنتج</li>
#نهاية
#foreach( $key في $allProducts.keySet() )
<li>المفتاح: $key -> القيمة: $allProducts.get($key)</li>
#نهاية
#foreach( $customer في $customerList )
<tr><td>$velocityCount</td><td>$customer.Name</td></tr>
#نهاية
11. تم تعريف متغير velocityCount في ملف التكوين
انسخ رمز الكود كما يلي:
# الاسم الافتراضي لعداد الحلقة
# مرجع متغير
directive.foreach.counter.name = velocityCount
# قيمة البداية الافتراضية للحلقة
# مرجع متغير العداد.
Directive.foreach.counter.initial.value = 1
12. تضمين الملفات
#include( "one.gif"، "two.txt"، "three.htm" )
13. تحليل البرنامج النصي للاستيراد
#تحليل("me.vm")
14. #الإيقاف يوقف التنفيذ ويعود
15. تعريف وحدات الماكرو Velocimacros، والتي تعادل دعم الوظائف بما في ذلك الوظائف
#ماكرو(د)
<tr><td></td></tr>
#نهاية
يتصل
#د()
16. وحدات الماكرو مع المعلمات
انسخ رمز الكود كما يلي:
#ماكرو (صفوف الطاولة $color $somelist)
#foreach($something في $somelist)
<tr><td bgcolor=$color>$something</td></tr>
#نهاية
#نهاية
17. مشغل المدى
#foreach( $foo في [1..5] )