อ่าน 5 นาที
อีรูบี้
Embedded Ruby (ย่อว่าERBหรือeRuby ) เป็นเอ็นจิ้นเทมเพลตที่ฝังโค้ดRuby ลงใน เอกสารข้อความโดยทั่วไปจะใช้ในการสร้างเนื้อหาแบบไดนามิกใน เอกสาร HTMLซึ่งมีบทบาทคล้ายกับActive Server...
อีรูบี้
| อีรูบี้ | |
|---|---|
| ชื่ออื่นๆ | เออร์บี |
| เขียนเป็น | ทับทิม |
| พิมพ์ | เอ็นจิ้นเทมเพลต |
| ใบอนุญาต | ใบอนุญาต BSD 2 ข้อ |
| ที่เก็บข้อมูล | github.com/ruby/erb |
Embedded Ruby (ย่อว่าERBหรือeRuby ) เป็นเอ็นจิ้นเทมเพลตที่ฝังโค้ดRuby ลงใน เอกสารข้อความโดยทั่วไปจะใช้ในการสร้างเนื้อหาแบบไดนามิกใน เอกสาร HTMLซึ่งมีบทบาทคล้ายกับActive Server Pages , JavaServer Pages , PHP และ ภาษาสคริปต์ฝั่งเซิร์ฟเวอร์อื่นๆeRuby ผสานโค้ด Ruby และข้อความธรรมดาเข้าด้วยกันเพื่อให้สามารถควบคุมการไหลและการแทนที่ตัวแปร ทำให้โค้ดที่รวมกันนั้นดูแลรักษาง่ายขึ้น[ 1 ]
ในRuby on Railsนั้น eRuby มักใช้ในเลเยอร์การแสดงผล (view layer) เพื่อสร้างเนื้อหาเว็บแบบไดนามิกโมดูลการแสดงผลของ Ruby on Rails มีหน้าที่ในการแสดงผลหรือผลลัพธ์ในเบราว์เซอร์ในรูปแบบที่ง่ายที่สุด การแสดงผลอาจประกอบด้วย เนื้อหา HTML แบบคงที่ อย่างไรก็ตาม แอปพลิเคชัน Ruby on Rails จำนวนมากจะต้องการเนื้อหาแบบไดนามิกที่สร้างโดยตัวควบคุม (เมธอดแอ็กชัน) เพื่อแสดงในมุมมอง ซึ่งทำได้โดยใช้เทมเพลต Embedded Ruby ซึ่งอนุญาตให้ฝังโค้ด Ruby ลงในเอกสารมุมมองได้
ระหว่างการเรนเดอร์ โค้ดที่ฝังไว้จะถูกประเมินและแทนที่ด้วยค่าที่ได้ในระหว่างการทำงานอย่างไรก็ตาม ความสามารถในการฝังโค้ดในเอกสารมุมมองมีความเสี่ยงที่จะทำลายการแยกส่วนที่ชัดเจนที่มีอยู่ในเฟรม MVCส่งผลให้การรักษาการแยกส่วนความรับผิดชอบที่ชัดเจนระหว่างโมดูลโมเดล มุมมอง และตัวควบคุมนั้นขึ้นอยู่กับนักพัฒนาแอปพลิเคชัน[ 2 ]
การใช้งาน
eRuby ฝังโค้ด Ruby ไว้ภายในตัว คั่นคู่หนึ่งที่เรียกว่า " <%และ" จากนั้นจึงทำการประเมินผลในตำแหน่งเดิม นอกจากการสร้างเว็บเพจแล้ว eRuby ยังสามารถใช้สร้างเอกสาร XML , ฟีด RSSและไฟล์ข้อความที่มีโครงสร้างรูปแบบอื่นๆ ได้อีกด้วย ยิ่งไปกว่านั้น eRuby ยังสร้างไฟล์คงที่แบบไดนามิกโดยอิงจากเทมเพลตฟังก์ชันการทำงานเหล่านี้ของ eRuby สามารถพบได้ในไลบรารี ERB %>
มีตัวบ่งชี้แท็กหลายประเภทที่ใช้ในเทมเพลต ERB:
- แท็กการแสดงออก
- แท็กการดำเนินการ
- แท็กความคิดเห็น[ 3 ]
แท็กการแสดงออก
ตัวคั่นบ่งชี้ว่าแท็กนั้นล้อมรอบนิพจน์ แท็กดังกล่าวเริ่มต้นด้วย ตัวคั่น แท็ก เปิด ตามด้วยสัญลักษณ์เท่ากับ และสิ้นสุดด้วยตัวคั่น แท็กปิด ในระหว่างการเรนเดอร์เทมเพลตโค้ดส่วนนี้จะถูกแทนที่ด้วยผลลัพธ์ของโค้ด หากผลลัพธ์ที่ประเมินแล้วไม่ใช่สตริง มันจะถูกแปลงเป็นสตริงก่อนที่จะเรนเดอร์[ 1 ]<%=%>
require 'erb' x = 500 template = ERB.new ( " The value of x is: <%= x %>" ) puts template.result ( binding ) < % # Output: The value of x is: 500 % >แท็กการดำเนินการ
แท็กการดำเนินการถูกกำหนดโดยและโค้ดที่อยู่ภายในแท็กดังกล่าวเรียกว่าสคริปต์เล็ตโค้ดในแท็กที่เกี่ยวข้องจะถูกดำเนินการ และผลลัพธ์จะถูกแทนที่ในตำแหน่งของสคริปต์เล็ต แท็กดังกล่าวต้องมีแท็กที่ตรงกันเพื่อระบุจุดสิ้นสุดของบล็อกการทำงาน เทมเพลต ERB ต่อไปนี้สร้างรายการ HTML สี่ครั้ง: [ 4 ]<%%><%end%>
<ul> < % 4.times do % >< li >รายการ</ li >< % end % > </ul>ผลลัพธ์ที่ได้มีดังต่อไปนี้:
< li >รายการ</ li > < li >รายการ</ li > < li >รายการ</ li > < li >รายการ</ li >จากผลลัพธ์ที่แสดง จะเห็นว่าข้อความในรายการถูกพิมพ์ออกมาสี่ครั้งสคริปต์ นี้ ไม่ได้สร้างข้อความใดๆ ด้วยตัวเอง เพียงแต่ทำให้คำสั่งที่อยู่ภายในทำงานซ้ำหลายครั้ง
แท็กความคิดเห็น
ความคิดเห็นจะถูกกำหนดด้วยแท็กและจะไม่ถูกแสดงในผลลัพธ์ แท็กดังกล่าวเริ่มต้นด้วยตัวคั่นแท็กเปิด ตามด้วยสัญลักษณ์แฮช และลงท้ายด้วยตัวคั่นแท็กปิด ต่อไปนี้เป็นตัวอย่างของแท็กความคิดเห็น: [ 5 ]<%#%>
<%# โค้ด Ruby %>
Ruby ใช้แท็กความคิดเห็นแบบเดียวกับ eRuby และโค้ดทั้งหมดที่อยู่หลังแท็ก#จะถูกละเลย ทำให้ไม่มีการสร้างอะไรขึ้นมา
แท็กอื่นๆ
นอกจาก นี้ยังมีแท็กอื่นๆ ที่พบได้ทั่วไปทั้งใน eRuby และ Ruby เช่น การแทนที่สตริงด้วย#{string_name}ซึ่งคล้ายกับในภาษาต่างๆ เช่นPerlหรือPHP
ใน eRuby สามารถระงับการขึ้น บรรทัดใหม่ได้โดยการเพิ่มเครื่องหมายยัติภังค์ (-) ที่จุดเริ่มต้นของตัวคั่นแท็กปิด
ต่อไปนี้เป็นตัวอย่างของค่าที่@nameพิมพ์ซ้ำสองครั้งในบรรทัดเดียวกัน: [ 1 ] [ 3 ]
<% ทำซ้ำ2 ครั้ง-%> <%= @name %> < % end -%>การนำไปใช้
eRuby มีการใช้งานหลายรูปแบบ:
- เออร์บี
- เอรูบิส
- ถ่าน
เออร์บ
erbเป็นการใช้งาน eRuby ที่เขียนขึ้นโดยใช้ภาษาการเขียนโปรแกรม Ruby เพียงอย่างเดียว และรวมอยู่ในไลบรารีมาตรฐานของ Ruby [ 2 ]
สามารถสร้างเทมเพลตได้โดยการรันโค้ดที่เขียนโดยใช้วัตถุ ERB ตัวอย่างง่ายๆ มีดังนี้:
require 'erb' x = 400 simple_template = "ค่าของ x คือ: คือ <%= x %>." renderer = ERB . new ( simple_template ) puts output = renderer . result ( binding ) <% # ผลลัพธ์: ค่าของ x คือ: 400 %>วิธีการนี้แตกต่างจากการแทรกสตริงซึ่งจะสร้างผลลัพธ์ทันทีที่สร้างสตริงเสร็จ:
x = 400 string = "ค่าของ x คือ: #{ x } " puts stringอย่างไรก็ตาม การสร้างสตริงก่อนที่จะกำหนดค่าตัวแปรตัวแรก จะทำให้โค้ดไม่สามารถทำงานได้:
สตริง= "ค่าของ x คือ: #{ x } " x = 400 puts stringดังนั้น เหตุผลหลักในการใช้ ERB object คือการเขียนเทมเพลตล่วงหน้า โดยการผูกตัวแปรและเมธอดที่อาจยังไม่มีอยู่ ณ เวลานั้น เทมเพลตจะถูกประมวลผลก็ต่อเมื่อ มีการเรียกใช้ เมธอด resultบน ERB object เท่านั้น เพื่อให้สามารถเข้าถึงเมธอดและตัวแปรของอินสแตนซ์ object ได้ ERB จึงใช้binding object
การเข้าถึงตัวแปรและเมธอดของอ็อบเจ็กต์ทำได้โดย อ็อบเจ็กต์ การผูกแบบ ส่วนตัว ที่มีอยู่ในแต่ละคลาสของ Ruby การเข้าถึงเมธอดและตัวแปรภายในเมธอดของคลาส นั้นทำได้ง่าย อย่างไรก็ตาม หากต้องการเข้าถึงตัวแปรของคลาสอื่น คลาสนั้นจะต้องเปิดเผยอ็อบเจ็กต์การผูกผ่านเมธอดสาธารณะ ตัวอย่างมีดังนี้: [ 2 ] [ 4 ]
class ERBExample attr_accessor :variable1 # ใช้ bind เพื่อเข้าถึงตัวแปรของคลาสdef render () renderer . result ( binding ) enddef initialize ( variable1 ) @variable1 = variable1 end# เปิดเผยเมธอด binding() ส่วนตัวdef get_binding binding () end endตัวอย่าง= ERBExample.new ( variable1 ) เรนเดอร์= ERB.new ( template ) puts output = renderer.result ( example.get_binding )ดังที่แสดงไว้ อ็อบเจ็กต์ การผูกข้อมูลของคลาสERBExampleถูกเปิดเผย นอกจากนี้ อ็อบเจ็กต์ การผูกข้อมูลยังถูกใช้เพื่อเข้าถึงตัวแปรและเมธอดของคลาสภายในเมธอดหนึ่งของคลาสเอง
new()วิธีการของ ERB
วิธี การ ใหม่ของวัตถุ ERB รับพารามิเตอร์ เพิ่มอีกสอง ตัว พารามิเตอร์แรกระบุเทมเพลต และพารามิเตอร์ที่สองระบุระดับความปลอดภัยซึ่งทำให้เทมเพลตทำงานในเธรด ที่แตกต่างกัน ที่ระดับความปลอดภัยสูงสุดสี่ ERB ไม่สามารถใช้วัตถุผูกมัดได้เว้นแต่จะถูกทำเครื่องหมายว่าเชื่อถือได้ พารามิเตอร์ที่สามระบุตัวแก้ไขเสริม ซึ่งสามารถใช้เพื่อควบคุมการเพิ่มบรรทัดใหม่ลงในเอาต์พุต ตัวอย่างเช่น เพื่อให้แน่ใจว่า ERB จะไม่แสดงบรรทัดใหม่หลังจากสิ้นสุดแท็ก สามารถสร้างวัตถุ ERB ได้ดังที่แสดงด้านล่าง: [ 3 ] [ 4 ]
renderer = ERB.new ( template , 3 , ' > ' )หากต้องการระบุเฉพาะพารามิเตอร์ที่สามและไม่สนใจพารามิเตอร์ที่สอง ให้ใส่ค่า 0 สำหรับพารามิเตอร์ที่สอง
ERB มีเมธอดอื่นๆ อีกมากมายที่สามารถใช้ในการสร้างเทมเพลตได้ รายชื่อAPI ทั้งหมด ที่ ERB เปิดเผยนั้นมีอยู่ใน เอกสารประกอบ ของ ERB
การเรียกใช้ ERB จากบรรทัดคำสั่ง
บรรทัดคำสั่ง erb ช่วยให้สามารถประมวลผลเทมเพลต ERB จากเทอร์มินัลได้ โดยจะอ่านไฟล์เทมเพลต ประเมินโค้ด Ruby ที่ฝังอยู่ และพิมพ์ผลลัพธ์ในเอาต์พุต สามารถใช้การเปลี่ยนเส้นทางเอาต์พุตเพื่อเขียนผลลัพธ์ลงในไฟล์แทนที่จะพิมพ์ในเอาต์พุตมาตรฐาน[ 3 ]
erb sample1.erb.txt > my_view.html.erb ในตัวอย่างข้างต้น ผลลัพธ์จะถูกส่งต่อไปยังไฟล์ my_view.html.erb
สามารถโหลดไลบรารีของบุคคลที่สามเพิ่มเติมได้โดยใช้-rตัวเลือกตามด้วยชื่อของไลบรารี ซึ่งคล้ายกับคำrequireหลัก
ตัวอย่างต่อไปนี้ใช้ ไลบรารี IPAddr :
erb -r IPAddr sample1.txt.erb > my_view.html.erb สำหรับการระบุระดับความปลอดภัย สามารถส่งค่าตัวเลขเป็นอาร์กิวเมนต์บรรทัดคำสั่งโดยใช้-Sตัวเลือก: [ 3 ]
erb -S 4 sample1.erb.txt > my_view.html.erb เอรูบิส
erubisเป็นการใช้งาน eRuby ที่เขียนด้วย Ruby และJavaทำงานได้เร็วกว่า eRuby และ ERb และมีตัวเลือกที่มีประโยชน์หลายอย่าง รวมถึงแท็กทางเลือกที่อนุญาตให้ใช้XMLที่ ถูกต้อง [ 6 ]
ถ่าน
Emberเป็นการใช้งาน eRuby บนLinux ที่เขียนด้วย Ruby อย่างสมบูรณ์ ช่วยให้สามารถดีบักเทมเพลต eRuby ปรับปรุงการประกอบเทมเพลต และมีคำสั่งย่อ eRuby ที่ทรงพลัง[ 7 ]
การเปรียบเทียบแท็กการใช้งานที่แตกต่างกัน
ตารางด้านล่างเปรียบเทียบแท็กที่มีให้ใช้งานในแต่ละการใช้งานข้างต้น: [ 4 ] [ 7 ] [ 8 ]
การนำไปใช้ | แท็กแสดงผลแบบง่าย<%=%> | แท็กการดำเนินการแบบง่าย<%%> | แท็กแสดงความคิดเห็นแบบง่าย<%#%> | ความสามารถในการกำหนดค่ารูปแบบแท็ก | สัญลักษณ์ย่อสำหรับแท็ก | <%~%> | <%+%> | <%<> | <%|> |
|---|---|---|---|---|---|---|---|---|---|
เออร์บ | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่สามารถเขียนได้ดังนี้ <%xy%>%xy | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
เอรูบิส | ใช่ | ใช่ | ใช่ | ใช่ สามารถเปลี่ยนรูปแบบแท็กเป็นอะไรก็ได้ เช่น - | ใช่, เนื่องจากสามารถเปลี่ยนรูปแบบแท็กได้ | เลขที่ | เลขที่ | เลขที่ | เลขที่ |
ถ่าน | ใช่ | ใช่ | ใช่ | เลขที่ | ใช่สามารถเขียนได้ดังนี้ <%xy%>%xy | เนื้อหาภายในแท็กจะถูกประเมินเป็นเทมเพลต eRuby | เนื้อหาภายในแท็กจะถูกประเมินเป็นโค้ด Ruby และคาดว่าจะเป็นเส้นทางที่ชี้ไปยังไฟล์เทมเพลต Ruby ซึ่งจะถูกอ่าน ประเมิน และแสดงผล | เหมือนกันแต่เนื้อหาของไฟล์จะถูกแสดงผลออกมาในรูปแบบไฟล์เอาต์พุตเท่านั้น <%+%> | โค้ดที่อยู่ภายในจะถูกประมวลผลเป็นบล็อกโค้ด Ruby และ (หากจำเป็น) จะเพิ่มdoคีย์เวิร์ดเข้าไปในส่วนเนื้อหาของแท็ก |
ดูเพิ่มเติม
- ม็อดรูบี้
- ผู้โดยสาร Phusion ( mod_rails )
- แฮมล์
- RDoc
- มาร์กาบี้
ลิงก์ภายนอก
- ห้องสมุด ERB
- "Ruby และเว็บ"บทหนึ่งจากหนังสือ "คู่มือโปรแกรมเมอร์เชิงปฏิบัติ"
- "web-mode.el"คือโหมดหลักของ Emacs สำหรับการแก้ไขเทมเพลต eRuby
- ERB – การสร้างเทมเพลตด้วย Ruby
- เอกสารประกอบ erb
- ไลบรารีมาตรฐานของ Ruby
- เอกสารเกี่ยวกับ Erubis ถูกเก็บถาวรเมื่อวันที่ 27 มีนาคม 2017 ที่Wayback Machine
- เอกสารประกอบการใช้งาน Ember
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ อีรูบี้
Embedded Ruby (ย่อว่าERBหรือeRuby ) เป็นเอ็นจิ้นเทมเพลตที่ฝังโค้ดRuby ลงใน เอกสารข้อความโดยทั่วไปจะใช้ในการสร้างเนื้อหาแบบไดนามิกใน เอกสาร HTMLซึ่งมีบทบาทคล้ายกับActive Server...
การใช้งาน
eRuby ฝังโค้ด Ruby ไว้ภายในตัว คั่น คู่หนึ่งที่เรียกว่า "
แท็กการแสดงออก
ตัวคั่นบ่งชี้ว่าแท็กนั้นล้อมรอบนิพจน์ แท็กดังกล่าวเริ่มต้นด้วย ตัวคั่น แท็ก เปิด ตามด้วยสัญลักษณ์เท่ากับ และสิ้นสุดด้วย ตัวคั่น แท็กปิด ในระหว่างการเรนเดอร์ เทมเพลต โค้ดส่วนนี้จะถูกแทนที่ด้วยผลลัพธ์ของโค้ด หากผลลัพธ์ที่ประเมินแล้วไม่ใช่สตริง...
แท็กการดำเนินการ
แท็กการดำเนินการถูกกำหนดโดยและโค้ดที่อยู่ภายในแท็กดังกล่าวเรียกว่า สคริปต์เล็ต โค้ดในแท็กที่เกี่ยวข้องจะถูกดำเนินการ และผลลัพธ์จะถูกแทนที่ในตำแหน่งของสคริปต์เล็ต แท็กดังกล่าวต้องมีแท็กที่ตรงกันเพื่อระบุจุดสิ้นสุดของบล็อกการทำงาน เทมเพลต ERB...