erb, haml या स्लिम: आप किसे सुझाव देते हैं? और क्यों? [बन्द है]


103

मैं रेल सीख रहा हूं और मैंने इन टेम्पलेट इंजनों को देखा है। मुझे उनके साथ कोई अनुभव नहीं है (केवल एरब)।

लेकिन जैसा कि मैं एक शुरुआती हूं, मैं वास्तव में भ्रमित हूं। आप कौन सा सुझाव देते हैं और क्यों? Erb, Haml या स्लिम? कृपया दूसरों पर एक तरजीह देने का अपना कारण बताएं। और यदि आपके पास कोई अन्य सिफारिशें हैं, तो कृपया हमें बताएं।

संपादित करें: मैं यहाँ एक विजेता की तलाश में नहीं हूँ। मैं सिर्फ उनके बारे में, उनकी वाक्य रचना, निष्पादन की गति, आदि के बारे में आपकी राय सुनना चाहता हूं।


7
संक्षिप्त उत्तर है, एक शुरुआत के रूप में, ईआरबी का उपयोग करें।
स्कॉट स्कल्थेस 19


हालांकि एक टेम्पलेट इंजन नहीं है, आप उस डोम रत्न पर गौर कर सकते हैं जिसे मैंने विकसित किया है। यह आपको रूबी के रूप में एचटीएमएल कोड लिखने की अनुमति देता है।
आरा

15
यह "रचनात्मक नहीं" प्रश्न मेरे लिए अविश्वसनीय रूप से उपयोगी था। यह पूछने के लिए धन्यवाद, भले ही जो भी कारण के लिए mods महसूस नहीं करता है कि यह फिट बैठता है। यह शीर्ष गूगल हिट्स में से एक था और यहाँ कई उत्तरों ने मुझे अपना निर्णय लेने में मदद की।
एंडी बेयर्ड

2
यह अभी भी 'रेल HTML html' के लिए # 1 Google परिणाम है
Orwellophile

जवाबों:


67

ईआरबी मुख्य रूप से अच्छा है यदि आपके पास एक वेब डिजाइनर है जो सादे एचटीएमएल पर काम करेगा और यह नहीं जानता कि या तो एचएमएल या पतला है। इस तरह वह HTML लिख सकता है और आप उचित टैग के साथ माणिक तर्क को एम्बेड कर सकते हैं।

यदि आप HTML और रूबी लॉजिक दोनों पर काम करते हैं, या आपका डिज़ाइनर कुछ नया सीखने के लिए तैयार है (जैसे HAML) तो मैं HAML जाऊंगा। यह बहुत अधिक रूबी-अनुकूल है, ईआरबी की तुलना में बहुत अधिक और बहुत पठनीय है।

उदाहरण के लिए (आधिकारिक एचएएमएल साइट से लिया गया ):

ईआरबी में आपका विचार इस तरह दिखाई देगा:

<div id="profile">
  <div class="left column">
    <div id="date"><%= print_date %></div>
    <div id="address"><%= current_user.address %></div>
  </div>
  <div class="right column">
    <div id="email"><%= current_user.email %></div>
    <div id="bio"><%= current_user.bio %></div>
  </div>
</div>

HAML में यह इस तरह दिखेगा:

#profile
  .left.column
    #date= print_date
    #address= current_user.address
  .right.column
    #email= current_user.email
    #bio= current_user.bio

एक बहुत क्लीनर!

एचएएमएल और एसएलआईएम के बीच अंतर के लिए - मैंने वास्तव में एसएलआईएम के साथ कभी काम नहीं किया, लेकिन मुझे लगता है कि यह स्वाद की बात है - दोनों वाक्यविन्यासों पर एक नज़र डालें और तय करें कि आपकी आंखों में कौन बेहतर दिखता है। मुझे नहीं लगता कि उन दोनों (HAML / SLIM) के बीच एक निश्चित विजेता है।


इसे पढ़ें - निश्चित विजेता के बारे में अंतिम वाक्य HAML और SLIM के बारे में था (ठीक से संपादित)।
इरेज़ रबीह

1
हां, इसके लिए +1, भले ही हैम और स्लिम HTML से सभी कबाड़ को बाहर निकालते हैं और एक बेहतर वाक्यांश के लिए चाहते हैं, पूरी तरह से फ्रीकिन का कमाल, कई HTML- केवल लोग बस इसके चारों ओर अपना सिर नहीं प्राप्त कर सकते हैं (या उठते हैं) पहली जगह में टी हैंडकॉडर, या स्निपेट और कॉपी-पास्ता पर भरोसा करें।)
ओदोडो

8
@ErezRabih वास्तव में HAML और SLIM के बीच एक बड़ा अंतर है। HAML की तुलना में स्लिम बहुत तेज है। इसमें एक क्लीनर सिंटैक्स भी है, और आप HTML विशेषताओं को अधिक सफाई से लिखने की अनुमति देता है a href="foo":।
मोहम्मद

87

ओला पर स्लिम का उपयोग करने के दो बड़े फायदे:

  1. स्लिम वर्तमान में हैल्म की तुलना में लगभग आठ गुना तेज है।

  2. HAML नहीं है, जबकि स्लिम HTTP स्ट्रीमिंग का समर्थन करता है।

  3. स्लिम में अधिक प्राकृतिक वाक्य रचना है: a href="foo.html"


3
क्या आपके पास स्लिम बनाम हैम की गति के बारे में आपके कथन का एक विश्वसनीय स्रोत है? मैंने इसके बारे में हर जगह बहुत कुछ पढ़ा है, लेकिन स्लिम के गिटहब पेज को छोड़कर मुझे इसके बारे में बहुत अधिक जानकारी नहीं है।
जोशुआ मुहीम

4
@JoshuaMuheim स्लिम बेंचमार्क कोड के साथ आता है जिसे आप अपनी मशीन पर संशोधित / टेस्ट कर सकते हैं: github.com/stonean/slim#testing
Gerry

5
+1 स्लिम HTTP स्ट्रीमिंग का समर्थन करता है, हम अपने भुगतान गेटवे और हरोकू के साथ समस्याओं का सामना कर रहे हैं, ऐसा लगता है कि स्ट्रीमिंग HTTP इस मुद्दे को हल करने का एक तरीका है, लेकिन जैसा कि हमारा आवेदन
एचएएमएल के

1
@DamianNowak मुझे लगता है कि आपका बयान सामान्यीकृत है। आप शायद मतलब है कि गति को अन्य कारकों को देखते हुए जरूरी नहीं कि कारक होना चाहिए। इसके अलावा, क्या होगा अगर एक पुस्तकालय अड़चन बनने के लिए काफी धीमा था? मुझे यकीन है कि देवता तब नोटिस लेंगे। देवताओं को गति के लिए कुछ भार देना पड़ता है , या वे बहुत स्मार्ट नहीं होते हैं, एह?
केल्विन

16
समय से पहले अनुकूलन के लिए एक अच्छा विचार नहीं है यदि इसके लिए बहुत अधिक अतिरिक्त काम की आवश्यकता होती है, लेकिन एक महत्वपूर्ण प्रदर्शन लाभ के कारण बस एक ही पुस्तकालय को दूसरे पर चुनना एक समय से पहले नहीं है।
जामुन होल्मग्रेन

35

मेरे सिर के ऊपर से यह वही है जिसके साथ मैं आया था

ERB :

पेशेवरों

  • डिफ़ॉल्ट बॉक्स से बाहर
  • सफेद स्थान पर निर्भर नहीं
  • रूबी कोड के साथ इसके HTML के रूप में प्रविष्टि का सबसे कम अवरोध (यदि HTML से आ रहा है)
  • ज्यादातर IDE के लेक्सर्स इसे डिफ़ॉल्ट रूप से पढ़ते हैं
  • डीएचएच इसे पसंद करता है
  • विरासत ऐप्स शायद अभी भी इसका उपयोग कर रहे हैं

विपक्ष

  • अधिक क्रिया
  • सामग्री_ सहायकों और विचारों में टैग जल्दी से हाथ से बाहर निकल सकते हैं
  • content_for टैग नेस्टिंग टैग को कठिन बनाता है क्योंकि erb केवल ब्लॉक में अंतिम लाइन देता है। इसलिए आपको एक तार में जोड़ना होगा और फिर उसे वापस करना होगा।

haml

पेशेवरों

  • अधिक संक्षिप्त। कोई बंद टैग नहीं, छोटे स्क्रीन में फिट बैठता है
  • नेत्रहीन सफाई संरचना
  • हेल्पर विधियों में haml का उपयोग करने के लिए सहायकों (haml_concat, haml_capture) में बनाया गया है
  • कक्षा का पीछा
  • डिव या के लिए # जैसे बहुत सारे उपयोगी सिंटैक्टिक शुगर। वर्ग की श्रृंखला के लिए, या: जेएस टैग के लिए जावास्क्रिप्ट

विपक्ष

  • व्हॉट्सएप निर्भर है जो कुछ कठिन त्रुटियों के लिए कई बार पता लगाता है
  • जटिल टैग को आमतौर पर "हैश" प्रारूप का सहारा लेना पड़ता है। (हालांकि मुझे वास्तव में लगता है कि यह किसी को शुरू करने के लिए लचीलापन का एक बड़ा उदाहरण है, यह एक दर्द हो सकता है।)
  • एक मणि के रूप में जोड़ा (फिर से एक चोर के रूप में डाल करने के लिए एक खिंचाव)
  • डिजाइनरों को समायोजित करने में कुछ परेशानी हो सकती है
  • सामान्य व्हाट्सएप चेतावनी के अलावा ... साधारण व्हाट्सएप त्रुटियां उदा। इंडेंटेशन के लिए टैब और स्थान, उत्पादन में गलत होने के लिए पृष्ठों का कारण बन सकते हैं जो सामान्य चश्मा / परीक्षण नहीं पकड़ेंगे। नैतिक: जब तक आप सुनिश्चित नहीं कर लेते कि आपके परीक्षण दृश्य के वास्तविक प्रतिपादन का परीक्षण कर रहे हैं, तब तक दृश्य परीक्षणों की अधिक आवश्यकता की अपेक्षा करें और मिशन के महत्वपूर्ण विचारों के लिए haml का उपयोग न करें।
  • धीमी है (एरब की तुलना में)
    • चेतावनी: यह रूबी कोड है जिसके बारे में हम बात कर रहे हैं यदि गति आपके आवेदन में एक अवरुद्ध मुद्दा है तो माणिक के विकल्प हैं, जैसे हैस्केल

मुझे लगता है कि हैम एक चोर के रूप में erb की तुलना में धीमी प्रदर्शन बुद्धिमान है जोड़ देंगे।
bkunzi01

हाँ। पक्का। मैं जोड़ दिया है कि एक
engineerDave

1
यदि आप HAML को पसंद करते हैं और आपके प्रदर्शन को लेकर चिंतित हैं, तो हैमलाइट का प्रयास करें। मैंने अपने ऐप्स पर रेंडर स्पीड पर एक बड़ा सुधार देखा है जो लगभग ERB जितना तेज़ है। github.com/k0kubun/hamlit
जॉर्ज नजरे टी

21

मेरे लिए सवाल यह है कि क्या आप %हर टैग से |पहले या पाठ के हर नए ब्लॉक से पहले डाल सकते हैं ?

पतला:

 tag(attr= "value")
  | text

haml:

 %tag{attr: "value"}
   text

देखने के लिए एक और चीज: haml नई लाइनों के बीच एक सफेद स्थान मानता है ( haml में व्हाट्सएप को हटा दें ) जबकि स्लिम कोई स्थान नहीं मानता है ( यहाँ और यहाँ स्लिम में whitespace जोड़ें )


9
+1। लेकिन टैग के रूप में एक ही लाइन पर पाठ के लिए पाइप की आवश्यकता नहीं है। यह केवल तभी आवश्यक है जब टैग के अंदर पाठ की पहली पंक्ति टैग के समान पंक्ति पर न हो। पहली पंक्ति के बाद प्रत्येक पाइप को इंडेंटेशन के कारण पाइप की आवश्यकता नहीं होती है।
केल्विन

मैं वास्तव में स्लिम के इस पहलू को पसंद करता हूं, क्योंकि यह मेरे लिए गैर-अंतर्राष्ट्रीय स्ट्रिंग्स लिखना मुश्किल बना देता है।
KonstantinK

निश्चित रूप |से प्रत्येक %टैग के लिए पाठ के प्रत्येक ब्लॉक के लिए। शाब्दिक पाठ के ब्लॉक की तुलना में कहीं अधिक टैग हैं। स्लिम के साथ मेरे लिए एक छोटी, लेकिन अर्थपूर्ण जीत यह है कि <>उपयोग किए जाने वाले टैग के साथ कोई भी कच्ची शाब्दिक html स्पष्ट से पहले है |। मैं पसंद करता हूं "जब तक आप स्पष्ट रूप से इसे |" "सब कुछ" के साथ शाब्दिक बना देते हैं, तब तक सब कुछ पतला है जब तक कि आप इसे एक के साथ %
एचएमएल नहीं बनाते हैं

मुझे लगता है कि स्लिम एचटीएमएल ( attr="value") की तरह दिखता है , जबकि हैम रूबी ( {key: "value"}हैश की तरह) की तरह दिखता है ।
फ्रैंकलिन यू

16

https://github.com/scalp42/hamlerbslim - एक स्वतंत्र बेंचमार्क है जो स्लिम और एर्ब को विजेताओं के रूप में दिखाता है, प्रदर्शन बुद्धिमान (स्लिम HTML आउटपुट आकार को भी कम करता है।)

मेरी व्यक्तिगत राय है कि कुल मिलाकर, स्लिम और हैम आपको रखरखाव के मामले में समय (== पैसा) बचाएगा, बशर्ते कि आपके विचारों को देखने के लिए हमल / स्लिम प्रेमी लोग हों।

यदि आपके पास वे लोग नहीं हैं, तो निश्चित रूप से एरब जाने का रास्ता है, क्योंकि दुनिया में सबसे अच्छी इच्छा के बावजूद, बहुत सारे बहुत सस्ते लोग उपलब्ध हैं जो एचटीएमएल / एर्ब के साथ काम कर सकते हैं, लेकिन हमल / स्लिम को पूरा कर सकते हैं। रहस्य।

सभी मामलों में से सर्वश्रेष्ठ, इन लोगों को स्लिम का उपयोग करने के लिए प्रशिक्षित करें या कम से कम उन्हें इसे उजागर करें, और उन लोगों की संख्या को रखें जो "इसे" करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.