ERB एक टेम्पलेटिंग इंजन है।
एक टेम्पलेटिंग इंजन आपको HTML और Ruby को मिलाने की अनुमति देता है ताकि आप अपने डेटाबेस से डेटा का उपयोग करके वेब पेज उत्पन्न कर सकें।
ERB व्यूज रेंडर करने के लिए Rails का डिफ़ॉल्ट इंजन है।
नोट: Rails Ruby स्टैंडर्ड लाइब्रेरी से
ERBक्लास के बजाय erubi नामक एक कार्यान्वयन का उपयोग करता है।
जैसा कि आप इस लेख में बाद में सीखेंगे, ERB का उपयोग करने के लिए आपको Rails की आवश्यकता नहीं है।
लेकिन पहले:
ERB के सिंटैक्स का परिचय, अपने Ruby प्रोजेक्ट्स में ERB का उपयोग कैसे करें और यह अन्य टेम्पलेटिंग इंजन्स जैसे HAML से कैसे तुलना करता है।
चलिए शुरू करते हैं!
एम्बेडेड Ruby (ERB) ट्यूटोरियल
एक ERB टेम्पलेट एक फाइल है जो .html.erb या .erb एक्सटेंशन के साथ समाप्त होती है।
ERB टेम्पलेट के अंदर आप जो कुछ भी लिखते हैं वह HTML होता है।
जब तक... आप एक विशेष टैग का उपयोग नहीं करते!
यहां एक उदाहरण है:
Hello <%= name %>!
यह <%= %> टैग टेम्पलेटिंग इंजन द्वारा अंदर के Ruby कोड का मूल्यांकन करके प्रतिस्थापित किया जाएगा।
यह स्ट्रिंग इंटरपोलेशन की तरह है!
<%= %> में इक्वल्स साइन पर ध्यान दें।
यह 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 if स्टेटमेंट है, जैसे एक नियमित Ruby if स्टेटमेंट लेकिन विशेष टेम्पलेटिंग सिंटैक्स में लपेटा गया ताकि जब यह पेज उपयोगकर्ता के लिए रेंडर हो तो इसका मूल्यांकन किया जा सके और आउटपुट द्वारा प्रतिस्थापित किया जा सके।
यहां एक ERB लूप है:
<% @books.each do |book| %> <%= book.title %> <%= book.author %>
<% end %>
बुक्स की एक सरणी दिए जाने पर, यह प्रत्येक बुक को उनके बीच एक लाइन ब्रेक के साथ प्रिंट करेगा।
यदि आप Rails का उपयोग कर रहे हैं, तो यह आपके लिए इस टेम्पलेट को रेंडर करेगा जब आप संबंधित कंट्रोलर एक्शन को कॉल करेंगे।
Rails के बिना ERB का उपयोग करना
यदि आप रिपोर्ट और स्टेटिक वेबसाइट्स बनाने के लिए Rails के बाहर 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 से बदलना होगा।
Rails "वेरिएबल बाइंडिंग" नामक एक मेटाप्रोग्रामिंग ट्रिक का उपयोग करता है।
यही तरीका है जिससे Rails आपके कंट्रोलर से इंस्टेंस वेरिएबल्स को आपके टेम्पलेट के साथ साझा करता है। लेकिन यदि आप Rails के बिना ERB का उपयोग करने जा रहे हैं तो हैश का उपयोग करना (result_with_hash मेथड के साथ) एक क्लीनर समाधान है।
आप क्या सोचते हैं?
टेम्पलेटिंग इंजन्स की तुलना
अब:
आइए विभिन्न टेम्पलेटिंग इंजन्स की तुलना करें।
आप Tilt जेम का उपयोग करके इन सभी इंजन्स तक पहुंच सकते हैं। Tilt, Faraday की तरह एक एडाप्टर जेम है।
उदाहरण:
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 से अलग है, इसलिए आपको इसकी आदत डालनी होगी।
यहां तक कि अधिक संक्षिप्त Slim का सिंटैक्स है:
head title Ruby Templating Engines = 123 * 2 body - foo.each do |bar| p | This Is Cool
Slim मल्टी-लाइन कंटेंट ब्लॉक्स के लिए पाइप कैरेक्टर का उपयोग करता है, HAML में आपको इसकी आवश्यकता नहीं होती।
आइए GitHub रिपॉजिटरी लेवल पर तुलना देखें:
| REPO | STARS | LAST_COMMIT | LATEST_RELEASE | CREATED_DATE |
|---|---|---|---|---|
| jeremyevans/erubi | 255 | 2019-11-05 14:09:06 | 2019-09-25 15:44:36 | 2016-11-10 22:42:44 |
| haml/haml | 3461 | 2019-12-27 10:51:59 | 2019-08-06 12:01:09 | 2008-02-11 22:55:26 |
| slim-template/slim | 4898 | 2019-12-15 23:55:23 | 2018-09-02 23:54:10 | 2010-09-13 01:32:07 |
तो आपको किसका उपयोग करना चाहिए?
मुझे लगता है कि यह ज्यादातर व्यक्तिगत पसंद है।
लेकिन एक बात स्पष्ट है:
एक विशिष्ट प्रोजेक्ट के लिए एक चुनें और अपने सभी टेम्पलेट्स को उस इंजन का उपयोग करके लिखें।
मिक्स एंड मैच न करें।
मुझे ERB टेम्पलेट्स के साथ रहना पसंद है...
सही एडिटर स्निपेट्स और सपोर्ट के साथ यह इतना अधिक लिखना नहीं है।
आपके पास कन्वर्टर्स भी उपलब्ध हैं (ERB से/में) यदि आप कभी दूसरे इंजन पर जाना चाहते हैं।
सारांश
आपने Ruby में टेम्पलेटिंग इंजन्स के बारे में सीखा!
कृपया इस लेख को साझा करें और यदि आपने अभी तक सदस्यता नहीं ली है तो मेरे न्यूज़लेटर की सदस्यता लें (9000+ ग्राहक) ताकि आप इस तरह की और अधिक बढ़िया सामग्री प्राप्त कर सकें।
पढ़ने के लिए धन्यवाद 🙂