เอกสารสำหรับการสร้างเทมเพลตเป็นบางส่วนฉันดูแหล่งที่มา
_.templateฟังก์ชั่นมี 3 ข้อโต้แย้ง:
- ข้อความสตริง: สตริงแม่แบบ
- ข้อมูลวัตถุ: ข้อมูลการประเมินผล
- การตั้งค่าวัตถุ: การตั้งค่าท้องถิ่น_.templateSettingsเป็นวัตถุการตั้งค่าร่วม
หากไม่ได้รับข้อมูล (หรือ null) ฟังก์ชันการแสดงผลจะถูกส่งคืนมากกว่า มันมี 1 ข้อโต้แย้ง:
- ข้อมูลวัตถุ: เหมือนกับข้อมูลข้างต้น
มี 3 รูปแบบ regex และพารามิเตอร์แบบคงที่ 1 ในการตั้งค่า:
- RegExp ประเมินผล : "<% code%>" ในสตริงแม่แบบ
- RegExp แก้ไข : "<% = code%>" ในสตริงแม่แบบ
- RegExp หลบหนี : "<% - รหัส%>"
- ตัวแปรสตริง: เป็นทางเลือกชื่อของพารามิเตอร์ข้อมูลในสตริงแม่แบบ
รหัสในส่วนประเมินจะถูกประเมินเพียง คุณสามารถเพิ่มสตริงจากส่วนนี้ด้วยคำสั่ง__p + = "mystring"ไปยังเทมเพลตที่ประเมิน แต่ไม่แนะนำ (ไม่ได้เป็นส่วนหนึ่งของส่วนต่อประสานเทมเพลต) ใช้ส่วนแทรกแทน ส่วนประเภทนี้มีไว้สำหรับเพิ่มบล็อกเช่นถ้าหรือสำหรับแม่แบบ
ผลลัพธ์ของรหัสในส่วนการแก้ไขจะถูกเพิ่มไปยังเทมเพลตที่ประเมิน ถ้า null กลับมาสตริงที่ว่างเปล่าจะถูกเพิ่ม
ส่วนการหลบหนีหนีออกมาจาก html ด้วย_.escapeบนค่าส่งคืนของรหัส ดังนั้นของที่คล้ายกันกว่า_.escape (code)ในตีความส่วน แต่มันหนีกับ\ตัวละครช่องว่างเช่น\ nก่อนที่มันจะผ่านรหัสไปยัง_.escape ฉันไม่รู้ว่าทำไมถึงมีความสำคัญมันอยู่ในรหัส แต่มันทำงานได้ดีกับการสอดแทรกและ_.escape - ซึ่งไม่ได้หนีจากอักขระช่องว่าง - เช่นกัน
โดยค่าเริ่มต้นพารามิเตอร์ข้อมูลจะถูกส่งผ่านโดยคำสั่งwith (data) {... }แต่การประเมินประเภทนี้ช้ากว่าการประเมินด้วยตัวแปรที่ระบุชื่อมาก ดังนั้นการตั้งชื่อข้อมูลด้วยพารามิเตอร์ตัวแปรจึงเป็นสิ่งที่ดี ...
ตัวอย่างเช่น:
var html = _.template(
"<pre>The \"<% __p+=_.escape(o.text) %>\" is the same<br />" +
"as the \"<%= _.escape(o.text) %>\" and the same<br />" +
"as the \"<%- o.text %>\"</pre>",
{
text: "<b>some text</b> and \n it's a line break"
},
{
variable: "o"
}
);
$("body").html(html);
ผล
The "<b>some text</b> and
it's a line break" is the same
as the "<b>some text</b> and
it's a line break" and the same
as the "<b>some text</b> and
it's a line break"
คุณสามารถหาตัวอย่างเพิ่มเติมได้ที่นี่วิธีใช้เทมเพลตและแทนที่การตั้งค่าเริ่มต้น:
http://underscorejs.org/#template
โดยการโหลดแม่แบบคุณมีตัวเลือกมากมาย แต่ในตอนท้ายคุณจะต้องแปลงแม่แบบเป็นสตริงเสมอ คุณสามารถกำหนดให้เป็นสตริงปกติเช่นตัวอย่างด้านบนหรือคุณสามารถโหลดจากแท็กสคริปต์และใช้ฟังก์ชัน. html ()ของ jquery หรือคุณสามารถโหลดจากไฟล์แยกต่างหากด้วยปลั๊กอิน tpl of require.js .
อีกทางเลือกหนึ่งในการสร้างต้นไม้ดอมด้วยลาโคนิกแทนการสร้างเทมเพลต