Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

रूबी टेम्प्लेटिंग इंजन:ईआरबी, एचएएमएल और स्लिम

ERB एक टेंपलेटिंग इंजन है।

एक टेम्प्लेटिंग इंजन आपको HTML और Ruby को मिलाने . की अनुमति देता है ताकि आप अपने डेटाबेस से डेटा का उपयोग करके वेब पेज जेनरेट कर सकें।

दृश्य प्रस्तुत करने के लिए ERB रेल डिफ़ॉल्ट इंजन है।

<ब्लॉकक्वॉट>

नोट:रेल ERB . के बजाय erubi नामक एक कार्यान्वयन का उपयोग करता है रूबी मानक पुस्तकालय से कक्षा।

जैसा कि आप इस लेख में बाद में जानेंगे, आपको ERB का उपयोग करने के लिए रेल की आवश्यकता नहीं है।

लेकिन पहले :

ERB के सिंटैक्स का परिचय, अपने रूबी प्रोजेक्ट्स में ERB का उपयोग कैसे करें और यह HAML जैसे अन्य टेम्प्लेटिंग इंजनों से कैसे तुलना करता है।

चलो यह करते हैं!

एम्बेडेड रूबी (ERB) ट्यूटोरियल

एक ईआरबी टेम्पलेट एक फ़ाइल है जो .html.erb . के साथ समाप्त होती है या .erb विस्तार।

ERB टेम्प्लेट के अंदर आप जो कुछ भी लिखते हैं वह HTML है।

जब तक... आप एक विशेष टैग का उपयोग नहीं करते!

यहां एक उदाहरण दिया गया है :

Hello <%= name %>!

यह <%= %> इसके अंदर रूबी कोड का मूल्यांकन करके टैग को टेम्प्लेटिंग इंजन द्वारा बदल दिया जाएगा।

यह स्ट्रिंग इंटरपोलेशन की तरह है!

<%= %> . में बराबर के साइन इन पर ध्यान दें ।

यह ERB को इस टैग की सामग्री को प्रस्तुत करने . के लिए कहता है ।

यदि आप ERB में एक लूप या if स्टेटमेंट लिखना चाहते हैं, तो आप बराबर चिह्न छोड़ना चाहते हैं ताकि ERB उन चीज़ों को प्रस्तुत न करे जिनकी आपको आवश्यकता नहीं है।

यदि आप सही ERB टैग का उपयोग नहीं करते हैं तो आपको एक त्रुटि भी मिल सकती है।

यहां एक उदाहरण दिया गया है :

<% if @favorite_food == "chocolate" %>
  Are you a chocolate lover? Here are some of our best PREMIUM chocolate bars!
<% else %>
  Here are our top 10 snacks that people bought this month.
<% end %>

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

ये रहा एक ERB लूप :

<% @books.each do |book| %>
  <%= book.title %>
  <%= book.author %>
  
<% end %>

पुस्तकों की एक श्रृंखला को देखते हुए, यह प्रत्येक पुस्तक को उनके बीच एक लाइन ब्रेक के साथ प्रिंट करेगा।

यदि आप रेल का उपयोग कर रहे हैं, तो जब आप संबंधित नियंत्रक क्रिया को कॉल करेंगे तो यह आपके लिए यह टेम्पलेट प्रस्तुत करेगा।

बिना रेल के ERB का उपयोग करना

यदि आप रिपोर्ट और स्थिर वेबसाइट बनाने के लिए रेल के बाहर ईआरबी का उपयोग करना चाहते हैं…

आप यह कर सकते हैं :

require 'erb'

Book     = Struct.new(:title, :author)
template = ERB.new(File.read('template.erb'))

template.result_with_hash(books: [Book.new("test"), Book.new("abc")])

आपको @books . को बदलना होगा books . के साथ यह काम करने के लिए आपके टेम्पलेट में।

रेल "वेरिएबल बाइंडिंग" नामक मेटाप्रोग्रामिंग ट्रिक का उपयोग करते हैं।

इस प्रकार रेल आपके नियंत्रक से आपके टेम्पलेट के साथ इंस्टेंस चर साझा करता है। लेकिन अगर आप हैश का उपयोग करके रेल के बिना ईआरबी का उपयोग करने जा रहे हैं (result_with_hash के साथ) विधि) एक क्लीनर समाधान है।

आपको क्या लगता है?

टेम्पलेटिंग इंजन की तुलना करना

अब :

आइए विभिन्न टेम्प्लेटिंग इंजनों की तुलना करें।

आप टिल्ट रत्न का उपयोग करके इन सभी इंजनों तक पहुंच सकते हैं। झुकाव फैराडे की तरह एक अनुकूलक रत्न है।

उदाहरण :

require 'tilt'
Tilt::ErubiTemplate.new("test.erb").render

require 'tilt/haml'
Tilt::HamlTemplate.new("test.haml").render

require 'slim'
Slim::Template.new("test.slim").render

यहां विभिन्न कार्यान्वयनों के बीच बेंचमार्क . है :

Comparison:
     erubi:     5786.0 i/s
       ERB:     4438.8 i/s - 1.30x  slower
      Haml:     1340.0 i/s - 4.32x  slower
      Slim:      724.1 i/s - 7.99x  slower

यहाँ क्या है HAML सिंटैक्स ऐसा दिखता है:

%head
  %title Ruby Templating Engines
  = 123 * 2
%body
  - foo.each do |bar|
    %p
      This Is Cool

यह सादे HTML से अलग है, इसलिए आपको इसकी आदत डालनी होगी।

इससे भी अधिक संक्षिप्त है स्लिम का सिंटैक्स :

head
  title Ruby Templating Engines
  = 123 * 2
body
  - foo.each do |bar|
    p
      | This Is Cool

स्लिम सामग्री के बहु-पंक्ति ब्लॉक के लिए पाइप वर्ण का उपयोग करता है, Haml में आपको इसकी आवश्यकता नहीं है।

आइए एक तुलना पर एक नज़र डालते हैं @ Github रिपॉजिटरी स्तर:

<थ>LAST_COMMIT
रेपो सितारे LATEST_RELEASE CREATED_DATE
जेरेमीवांस/एरुबी 255 2019-11-05 14:09:06 2019-09-25 15:44:36 2016-11-10 22:42:44
हैम/हैमल 3461 2019-12-27 10:51:59 2019-08-06 12:01:09 2008-02-11 22:55:26
स्लिम-टेम्पलेट/स्लिम 4898 2019-12-15 23:55:23 2018-09-02 23:54:10 2010-09-13 01:32:07

तो आपको किसका उपयोग करना चाहिए?

मुझे लगता है कि यह ज्यादातर व्यक्तिगत पसंद है।

लेकिन एक बात स्पष्ट है :

किसी विशिष्ट प्रोजेक्ट के लिए एक चुनें और उस इंजन का उपयोग करके अपने सभी टेम्प्लेट लिखें।

मिक्स एंड मैच न करें।

मुझे ERB टेम्प्लेट के साथ रहना पसंद है…

सही संपादक स्निपेट और समर्थन के साथ यह इतना अतिरिक्त लेखन नहीं है।

यदि आप कभी भी किसी अन्य इंजन में जाना चाहते हैं तो आपके पास कन्वर्टर्स (ईआरबी से/के लिए) उपलब्ध हैं।

सारांश

आपने रूबी में टेम्पलेट इंजन के बारे में सीखा है!

कृपया इस लेख को साझा करें और मेरे न्यूज़लेटर की सदस्यता लें यदि आपने अभी तक (9000+ ग्राहक) नहीं किया है तो आप इस तरह की और अधिक भयानक सामग्री प्राप्त कर सकते हैं।

पढ़ने के लिए धन्यवाद


  1. कौन सा सबसे तेज़ है? ईआरबी बनाम एचएएमएल बनाम स्लिम

    इस लेख में, हम तीन सबसे लोकप्रिय रूबी टेम्प्लेटिंग इंजनों के प्रदर्शन का परीक्षण और विश्लेषण करेंगे:ERB (डिफ़ॉल्ट एक), HAML और SLIM। बेंचमार्किंग व्यावसायिक प्रक्रियाओं और प्रदर्शन मेट्रिक्स की तुलना उद्योग के सर्वोत्तम और अन्य कंपनियों के सर्वोत्तम अभ्यासों से करने का अभ्यास है। इस बीच, लोड परीक्ष

  1. रूबी में इंसर्शन सॉर्ट को समझना

    नोट:रूबी के साथ विभिन्न सॉर्टिंग एल्गोरिदम को लागू करने पर विचार करने वाली श्रृंखला में यह भाग 4 है। भाग 1 ने बबल सॉर्ट की खोज की, भाग 2 ने चयन प्रकार की खोज की, और भाग 3 ने मर्ज सॉर्ट की खोज की। जैसा कि हम डेटा सॉर्ट करने के लिए विभिन्न तरीकों का पता लगाना जारी रखते हैं, हम इंसर्शन सॉर्ट की ओर रु

  1. रूबी में 9 नई सुविधाएँ 2.6

    रूबी का एक नया संस्करण नई सुविधाओं और प्रदर्शन में सुधार के साथ आ रहा है। क्या आप परिवर्तनों के साथ बने रहना चाहेंगे? आइए एक नज़र डालते हैं! अंतहीन रेंज रूबी 2.5 और पुराने संस्करण पहले से ही अंतहीन श्रेणी के एक रूप का समर्थन करते हैं (Float::INFINITY के साथ) ), लेकिन रूबी 2.6 इसे अगले स्तर पर ले