ERB একটি টেমপ্লেটিং ইঞ্জিন।
একটি টেমপ্লেটিং ইঞ্জিন আপনাকে HTML এবং রুবি মিশ্রণ করতে দেয় যাতে আপনি আপনার ডেটাবেস থেকে ডেটা ব্যবহার করে ওয়েব পেজ জেনারেট করতে পারেন।
ERB রেলসের ভিউ রেন্ডার করার জন্য ডিফল্ট ইঞ্জিন।
নোট: রেলস
ERBক্লাসের পরিবর্তে erubi নামক একটি ইমপ্লিমেন্টেশন ব্যবহার করে যা রুবি স্ট্যান্ডার্ড লাইব্রেরির অংশ।
আপনি এই আর্টিকেলে পরবর্তীতে শিখবেন, ERB ব্যবহার করার জন্য রেলস আবশ্যক নয়।
কিন্তু প্রথমে:
ERB-এর সিনট্যাক্স, আপনার রুবি প্রজেক্টে ERB কীভাবে ব্যবহার করবেন এবং অন্যান্য টেমপ্লেটিং ইঞ্জিন যেমন HAML-এর সাথে এর তুলনা।
শুরু করা যাক!
Embedded Ruby (ERB) টিউটোরিয়াল
একটি 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 if স্টেটমেন্ট, সাধারণ রুবি if স্টেটমেন্টের মতো কিন্তু স্পেশাল টেমপ্লেটিং সিনট্যাক্সের সাথে র্যাপ করা হয়েছে যাতে এটি ইভ্যালুয়েট ও রিপ্লেস হতে পারে যখন পেজটি ইউজারের জন্য রেন্ডার হবে।
এখানে একটি ERB লুপ:
<% @books.each do |book| %> <%= book.title %> <%= book.author %>
<% end %>
বইয়ের একটি অ্যারে দেওয়া থাকলে, এটি প্রতিটি বইকে লাইন ব্রেকের সাথে প্রিন্ট করবে।
আপনি যদি রেলস ব্যবহার করেন, তবে এটি আপনার টেমপ্লেটটি রেন্ডার করবে যখন আপনি সংশ্লিষ্ট কন্ট্রোলার অ্যাকশন কল করবেন।
রেলস ছাড়া ERB ব্যবহার
আপনি যদি রিপোর্ট ও স্ট্যাটিক ওয়েবসাইট বানাতে রেলস ছাড়া 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-এর সাথে রিপ্লেস করতে হবে যাতে এটি কাজ করে।
রেলস "ভেরিয়েবল বাইন্ডিং" নামক একটি মেটা-প্রোগ্রামিং ট্রিক ব্যবহার করে।
এইভাবে রেলস আপনার কন্ট্রোলার থেকে ইনস্ট্যান্স ভেরিয়েবলগুলো আপনার টেমপ্লেটের সাথে শেয়ার করে। কিন্তু আপনি যদি রেলস ছাড়া ERB ব্যবহার করেন তবে একটি হ্যাশ ব্যবহার করা ( result_with_hash মেথডের সাথে) একটি ক্লিনার সমাধান।
আপনি কী ভাবেন?
টেমপ্লেটিং ইঞ্জিন তুলনা
এখন:
আসুন বিভিন্ন টেমপ্লেটিং ইঞ্জিন তুলনা করি।
আপনি Tilt gem ব্যবহার করে এই সব ইঞ্জিন অ্যাক্সেস করতে পারেন। Tilt একটি অ্যাডাপ্টার gem 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 থেকে/এরে) যদি আপনি কখনো অন্য ইঞ্জিনে যেতে চান।
সারসংক্ষেপ
আপনি রুবিতে টেমপ্লেটিং ইঞ্জিন সম্পর্কে শিখেছেন!
দয়া করে এই আর্টিকেলটি শেয়ার করুন এবং আমার নিউজলেটার সাবস্ক্রাইব করুন যদি এখনও না করেছেন (৯০০০+ সাবস্ক্রাইবার) যাতে আপনি এরকম আরও অসাধারণ কন্টেন্ট পেতে পারেন।
পড়ার জন্য ধন্যবাদ 🙂