กลับไปหน้าบทความ

อ่าน 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:

  1. แท็กการแสดงออก
  2. แท็กการดำเนินการ
  3. แท็กความคิดเห็น[ 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 มีการใช้งานหลายรูปแบบ:

  1. เออร์บี
  2. เอรูบิส
  3. ถ่าน

เออร์บ

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คีย์เวิร์ดเข้าไปในส่วนเนื้อหาของแท็ก

ดูเพิ่มเติม

  • ห้องสมุด ERB
  • "Ruby และเว็บ"บทหนึ่งจากหนังสือ "คู่มือโปรแกรมเมอร์เชิงปฏิบัติ"
  • "web-mode.el"คือโหมดหลักของ Emacs สำหรับการแก้ไขเทมเพลต eRuby
  • ERB – การสร้างเทมเพลตด้วย Ruby
  • เอกสารประกอบ erb
  • ไลบรารีมาตรฐานของ Ruby
  • เอกสารเกี่ยวกับ Erubis ถูกเก็บถาวรเมื่อวันที่ 27 มีนาคม 2017 ที่Wayback Machine
  • เอกสารประกอบการใช้งาน Ember
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=ERuby&oldid=1358638110 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ อีรูบี้

Embedded Ruby (ย่อว่าERBหรือeRuby ) เป็นเอ็นจิ้นเทมเพลตที่ฝังโค้ดRuby ลงใน เอกสารข้อความโดยทั่วไปจะใช้ในการสร้างเนื้อหาแบบไดนามิกใน เอกสาร HTMLซึ่งมีบทบาทคล้ายกับActive Server...

การใช้งาน

eRuby ฝังโค้ด Ruby ไว้ภายในตัว คั่น คู่หนึ่งที่เรียกว่า "

แท็กการแสดงออก

ตัวคั่นบ่งชี้ว่าแท็กนั้นล้อมรอบนิพจน์ แท็กดังกล่าวเริ่มต้นด้วย ตัวคั่น แท็ก เปิด ตามด้วยสัญลักษณ์เท่ากับ และสิ้นสุดด้วย ตัวคั่น แท็กปิด ในระหว่างการเรนเดอร์ เทมเพลต โค้ดส่วนนี้จะถูกแทนที่ด้วยผลลัพธ์ของโค้ด หากผลลัพธ์ที่ประเมินแล้วไม่ใช่สตริง...

แท็กการดำเนินการ

แท็กการดำเนินการถูกกำหนดโดยและโค้ดที่อยู่ภายในแท็กดังกล่าวเรียกว่า สคริปต์เล็ต โค้ดในแท็กที่เกี่ยวข้องจะถูกดำเนินการ และผลลัพธ์จะถูกแทนที่ในตำแหน่งของสคริปต์เล็ต แท็กดังกล่าวต้องมีแท็กที่ตรงกันเพื่อระบุจุดสิ้นสุดของบล็อกการทำงาน เทมเพลต ERB...