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_COMMITLATEST_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+ ग्राहक) नहीं किया है तो आप इस तरह की और अधिक भयानक सामग्री प्राप्त कर सकते हैं।
पढ़ने के लिए धन्यवाद