เครื่องยนต์ jQuery templating [ปิด]


204

ฉันกำลังมองหาเอ็นจิ้นแม่แบบเพื่อใช้ฝั่งไคลเอ็นต์ ฉันลองใช้บางอย่างเช่น jsRepeater และ jQuery Templates ในขณะที่พวกเขาดูเหมือนจะทำงานได้ดีใน FireFox พวกเขาทั้งหมดดูเหมือนจะพังลงใน IE7 เมื่อมันลงมาเพื่อแสดงผลตาราง HTML

ฉันยังดูที่ MicrosoftAjaxTemplates.js (จากhttp://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16766 ) แต่ปรากฎว่ามีปัญหาเดียวกัน

คำแนะนำเกี่ยวกับเครื่องมือสร้างแรงดันไฟฟ้าอื่น ๆ ที่จะใช้?


1
ผมอยากจะ upvode คำถามนี้เป็นครั้งที่สอง :)
มาร์ค Schultheiss

1
ฉันจะตรวจสอบ JSViews และ JSRender ที่ดีมาก แต่ดูเหมือนว่าเป็นเครื่องมือสร้างเทมเพลต JQuery / UI อย่างเป็นทางการ (อย่างน้อยนี่คือสิ่งที่แผนงานพูด)
Eran Medan

1
ตอนนี้ JsRender มีผู้สมัครเบต้าสาธารณะ: borismoore.com/2012/03/…
John Papa

ฉันใช้เทมเพลต DoT ในตอนนี้ประสิทธิภาพที่ดีและหนวดเหมือนโน้ต
Eran Medan

คำตอบ:


109

ตรวจสอบริกราล์โพสต์Templating ไคลเอ็นต์กับ jQuery เขาสำรวจ jTemplates แต่ทำให้เป็นกรณีที่ดีกว่าสำหรับโซลูชัน micro-templatingของ John Resig แม้จะปรับปรุงบางอย่าง การเปรียบเทียบที่ดีมีตัวอย่างจำนวนมาก


3
github.com/jquery/jquery-tmplเป็น repo ที่แท้จริงของปลั๊กอิน templating ของ Resig
Alexander Bird

@ Thr4wn แหล่งที่มาของการจำลองอย่างมีนัยสำคัญแล้วห้องสมุดพูดคุยในบทความที่เชื่อมโยง ทั้งสองโดย Resig แม้ว่าแน่นอน
Frank Schwieterman

@ Frank "แหล่งที่มาของ repro นั้นสำคัญมากจากนั้นไลบรารีที่กล่าวถึงในบทความที่เชื่อมโยง" อืมเหรอ? พูดว่าอะไรนะ? ไม่แน่ใจว่าสิ่งที่คุณหมายถึงโดยทั้งหมดนี้
Mark Schultheiss

2
@ Mark: เขาหมายถึง "แตกต่างอย่างมีนัยสำคัญ"
Domenic

ฉันไม่เห็นตัวอย่างของรูปแบบที่ซับซ้อนที่ถูกสร้างขึ้นด้วยสิ่งนี้ มีใครสำรวจว่าต้องใช้อะไรบ้างเช่นเพิ่มแถวบางส่วนของเทมเพลตทั้งหมดเพื่อรองรับองค์ประกอบใหม่ในฟอร์มที่ผูกกับอาร์เรย์ของวัตถุ เทมเพลตจะรวมถึงการสร้างเทมเพลตดัชนีองค์ประกอบของอาร์เรย์และสามารถจัดลำดับอย่างเหมาะสมสำหรับการโพสต์ แต่ฉันมีปัญหาในการคิดทั้งหมด เป้าหมายคือฟังก์ชั่นเหมือน InfoPath (ฉันทราบถึงคุณลักษณะที่หลากหลายของ infopath ที่มีอยู่และตัวเลือกของ infopath ที่มีอยู่)
Jason Kleban

47

เพียงแค่ได้บางวิจัยเกี่ยวกับเรื่องนี้และฉันจะใช้jQuery-tmpl ทำไม?

  1. มันเขียนโดย John Resig
  2. มันจะได้รับการดูแลโดยทีมหลัก jQuery ในฐานะที่เป็นปลั๊กอิน "เป็นทางการ" แก้ไข: ทีม jQuery เลิกใช้งานปลั๊กอินนี้แล้ว
  3. มันสมดุลที่สมบูรณ์แบบระหว่างความเรียบง่ายและฟังก์ชั่น
  4. มันมีไวยากรณ์ที่สะอาดและคิดออกดีมาก
  5. มันเข้ารหัส HTML โดยค่าเริ่มต้น
  6. มันขยายได้อย่างมาก

เพิ่มเติมได้ที่นี่: http://forum.jquery.com/topic/templating-syntax


+1 แต่ฉันใช้ของ Rick Strahl Bcoz มันเล็กและตอบสนองวัตถุประสงค์ของฉันได้ดี
IsmailS

เพิ่งมีการประกาศว่านี่เป็นปลั๊กอินอย่างเป็นทางการแล้ว
serg

20
แต่น่าเสียดายที่มันถูกคิดค่าเสื่อมราคา นายหน้าคนใด?
OnesimusUnbound

3
มีการเปลี่ยนแปลงสถานการณ์ตอนนี้ในปี 2012 หรือไม่ฉันหมายความว่ามีวิธีแก้ปัญหาที่ดีกว่าในการสร้างเทมเพลตโดยใช้ไลบรารีที่พัฒนาขึ้นจากสคริปต์ต้นฉบับของ resig หรือไม่
Rajat Gupta

4
@OnesimusUnbound เป็น super-seeded โดย JS Render github.com/BorisMoore/jsrender
Blowsie

23

jQote: http://aefxx.com/jquery-plugins/jqote/

มีคนใช้โซลูชันไมโครเทมเพลตของ Resig แล้วบรรจุลงในปลั๊กอิน jQuery

ฉันจะใช้มันจนกว่า Resig จะเปิดเผยตัวเขาเอง (ถ้าเขาเผยแพร่ตัวเอง)

ขอบคุณสำหรับเคล็ดลับ ewbi


7
ตอนนี้กลายเป็น jQote2: aefxx.com/jquery-plugins/jqote2
Alex Angas

17

jQuery Nano :

เครื่องมือสร้างเทมเพลต

การใช้งานพื้นฐาน

สมมติว่าคุณมีการตอบสนอง JSON:

data = {
  user: {
    login: "tomek",
    first_name: "Thomas",
    last_name: "Mazur",
    account: {
      status: "active",
      expires_at: "2009-12-31"
    }
  }
}

คุณสามารถทำได้:

nano("<p>Hello {user.first_name} {user.last_name}! Your account is <strong>{user.account.status}</strong></p>", data)

และคุณจะได้รับสตริงพร้อม:

<p>Hello Thomas Mazur! Your account is <strong>active</strong></p>

หน้าทดสอบ ...


สิ่งนี้ไม่ได้ทำโครงสร้างการควบคุม (ifs and loops)
mahemoff

13

jQuery-tmpl จะอยู่ในจุดเริ่มต้นหลักของ jQuery ใน jQuery 1.5:

http://blog.jquery.com/2010/10/04/new-official-jquery-plugins-provide-templating-data-linking-and-globalization/

เอกสารอย่างเป็นทางการอยู่ที่นี่:

http://api.jquery.com/category/plugins/templates/


แก้ไข: มันถูกปล่อยออกมาจาก jQuery 1.5 และตอนนี้จะได้รับการประสานงานโดยทีม jQuery UI เนื่องจากมันจะขึ้นอยู่กับ jQuery UI Grid ที่กำลังจะมาถึง

http://blog.jquery.it/2011/04/16/official-plugins-a-change-in-the-roadmap/


11

ไม่แน่ใจว่ามันจัดการกับปัญหาเฉพาะของคุณได้อย่างไร แต่ยังมีเครื่องมือเทมเพลตPURE


นอกจากข้อ จำกัด แล้ว PURE ยังใช้งานง่ายมาก
Jader Dias

@Jader อะไรคือข้อ จำกัด ที่เจ็บปวดที่สุด?
ไมค์

@Mic PURE ถูก จำกัด โดยการออกแบบ ในเอ็นจินเทมเพลตฝั่งเซิร์ฟเวอร์คุณไม่จำเป็นต้องติดกับ HTML ที่ถูกต้อง แต่ PURE จะยึดตาม HTML แต่ฉันคิดว่ามีนิสัยใจคอที่จะอนุญาตให้เอ็นจินเทมเพลต javascript อื่นมีประสิทธิภาพเท่ากับฝั่งเซิร์ฟเวอร์
Jader Dias

@Jader, ใช้ได้กับ HTML เท่านั้น แต่ฉันไม่ได้รับสิ่งที่คุณหมายถึงนิสัยใจคอและเครื่องมืออื่น
ไมค์

@Mic PURE จะต้องมีการเขียนใหม่ตั้งแต่ต้นเพื่อให้มีคุณสมบัติบางอย่างที่จะรวม ในการอนุญาตให้ HTML แม่แบบที่ไม่ถูกต้องคุณควรใช้scriptแท็กที่มีคุณลักษณะที่แตกต่างจากtype text/javascriptนี่คือ "การเล่นโวหาร" ที่จะอนุญาต HTML ที่ไม่ถูกต้อง
Jader Dias

7

ขึ้นอยู่กับว่าคุณกำหนด "ดีที่สุด" อย่างไรโปรดดูโพสต์ของฉันที่นี่ในหัวข้อ

หากคุณมองหาที่เร็วที่สุดนี่เป็นเกณฑ์มาตรฐานที่ดีดูเหมือนว่าDoTจะชนะและทิ้งทุกคนไว้เบื้องหลัง

หากคุณกำลังมองหาปลั๊กอิน JQuery ที่เป็นทางการที่สุดนี่คือสิ่งที่ฉันค้นพบ

ตอนที่ 1: เทมเพลต JQuery

ปลั๊กอินเท็มเพลต JQuery เบต้าอย่างเป็นทางการชั่วคราวคือ http://api.jquery.com/category/plugins/templates/

แต่เห็นได้ชัดว่าเมื่อไม่นานมานี้มีการตัดสินใจที่จะเก็บไว้เป็นเบต้า ...

หมายเหตุ: ทีม jQuery ได้ตัดสินใจที่จะไม่ใช้ปลั๊กอินนี้ในช่วงเบต้า มันไม่ได้ถูกพัฒนาหรือดูแลอย่างจริงจังอีกต่อไป เอกสารยังคงอยู่ที่นี่ในขณะนี้ (สำหรับการอ้างอิง) จนกว่าปลั๊กอินแม่แบบการแทนที่ที่เหมาะสมจะพร้อมใช้งาน

ส่วนที่สอง: ขั้นตอนต่อไป

แผนงานใหม่ดูเหมือนจะจุดมุ่งหมายสำหรับชุดใหม่ของปลั๊กอินJSRender (อิสระจาก DOM และแม้แต่ JQuery เครื่องมือการแสดงผล template) และJSViewsซึ่งมีข้อมูลที่ดีบางอย่างมีผลผูกพันและสังเกตการณ์ / รูปแบบการดำเนินสังเกต

นี่คือการโพสต์บล็อกในหัวข้อ

http://www.borismoore.com/2011/10/jquery-templates-and-jsviews-roadmap.html

และนี่คือแหล่งข้อมูลล่าสุด

แหล่งข้อมูลอื่น ๆ

โปรดทราบว่ามันยังไม่ได้อยู่ในรุ่นเบต้าและเป็นเพียงรายการแผนที่ถนน แต่ดูเหมือนว่าเป็นผู้สมัครที่ดีที่จะกลายเป็นส่วนขยาย JQuery / JQueryUI อย่างเป็นทางการสำหรับแม่แบบและ UI ที่มีผลผูกพัน


4

เพื่อเป็นคนโง่เท่านั้น ^^

// LighTest TPL
$.tpl = function(tpl, val) {
    for (var p in val)
        tpl = tpl.replace(new RegExp('({'+p+'})', 'g'), val[p] || '');
    return tpl;
};
// Routine...
var dataObj = [{id:1, title:'toto'}, {id:2, title:'tutu'}],
    tplHtml = '<div>N°{id} - {title}</div>',
    newHtml    = '';
$.each(dataObj, function(i, val) {
     newHtml += $.tpl(tplHtml, val);
});
var $newHtml = $(newHtml).appendTo('body');

http://jsfiddle.net/molokoloco/w8xSx/ ;)


3

นี่ไม่ใช่ jsquery ที่เฉพาะเจาะจง แต่นี่เป็นไลบรารีเทมเพลตที่สร้างจาก JS ซึ่งเผยแพร่โดย google ในรูปแบบโอเพนซอร์ส:

http://code.google.com/p/google-jstemplate/

สิ่งนี้ช่วยให้การใช้องค์ประกอบ DOM เป็นแม่แบบและเป็นผู้เข้าร่วมอีกครั้ง (ในการแสดงผลของการแสดงผลแม่แบบที่ยังคงเป็นแม่แบบที่สามารถแสดงผลอีกครั้งด้วยรูปแบบข้อมูลที่แตกต่างกัน)


2

คนอื่น ๆ ก็ชี้ jquery-tmpl และฉันได้ตอบคำถามเหล่านี้แล้ว แต่ให้แน่ใจว่าได้ดูที่ GitHub ส้อม

มีการแก้ไขที่สำคัญออกมีและคุณสมบัติที่น่าสนใจเช่นกัน http://github.com/jquery/jquery-tmpl/network


1
มีทางแยกเฉพาะสำหรับค้นหาการแก้ไขหรือไม่
Kevin Hakanson

TBH มันยุ่งนิดหน่อย ... ฉันไปหาgithub.com/appendto/jquery-tmplหลังจากตรวจสอบการเปลี่ยนแปลงอย่างรวดเร็วและพิจารณาข้อเท็จจริงที่ผนวกเป็น บริษัท YMMV
Yann

jquery-tmpl ได้รับการพับในการกระจาย 1.4.3 อย่างเป็นทางการ
ยานน์


1

หากคุณกำลังทำงานใน NET Framework 2.0 / 3.5, คุณควรจะดูที่ JBST เป็นดำเนินการโดยhttp://JsonFx.net มันมีโซลูชันการสร้างเทมเพลตที่ฝั่งไคลเอ็นต์ที่มีไวยากรณ์ JSP / ASP ที่คุ้นเคย แต่ถูกคอมไพล์ก่อนหน้าในเวลาบิลด์สำหรับเท็มเพลตที่สามารถแคชขนาดกะทัดรัดที่ไม่จำเป็นต้องแยกวิเคราะห์ตอนรันไทม์ มันทำงานได้ดีกับ jQuery และไลบรารี JavaScript อื่น ๆ เนื่องจากเทมเพลตเหล่านี้จะถูกรวบรวมเป็น JavaScript บริสุทธิ์



1

สำหรับงานที่เบามาก jquery-tmpl นั้นเพียงพอ แต่ในบางกรณีข้อมูลจำเป็นต้องรู้วิธีการฟอร์แมตตัวเอง (สิ่งเลวร้าย!)

หากคุณกำลังมองหาแม่แบบที่โดดเด่นเต็มมากขึ้นปลั๊กอินผมขอแนะนำOrange-J มันได้รับแรงบันดาลใจจาก Freemarker รองรับหากมีสิ่งอื่นวนซ้ำวัตถุและอาร์เรย์อินไลน์จาวาสคริปต์รวมถึงแม่แบบภายในเทมเพลตและมีตัวเลือกการจัดรูปแบบที่ยอดเยี่ยมสำหรับเอาต์พุต (maxlen, wordboundary, htmlentities ฯลฯ )

โอ้และไวยากรณ์ง่าย


0

คุณอาจต้องการคิดสักเล็กน้อยว่าคุณต้องการออกแบบแม่แบบของคุณอย่างไร

ปัญหาหนึ่งที่มีโซลูชันเทมเพลตหลายรายการที่ระบุไว้ (jQote, jquery-tmpl, jTemplates) คือสิ่งที่พวกเขาต้องการให้คุณแทรกไม่ใช่ HTML ใน HTML ของคุณซึ่งอาจเป็นปัญหาในการทำงานกับเครื่องมือ HTML หรือในกระบวนการพัฒนากับนักออกแบบ HTML . โดยส่วนตัวฉันไม่ชอบความรู้สึกของวิธีการนั้นแม้ว่ามันจะมีข้อดีและข้อเสีย

มีคลาสของเทมเพลตอีกวิธีหนึ่งที่ใช้ HTML ปกติ แต่อนุญาตให้คุณระบุการเชื่อมโยงข้อมูลที่มีแอตทริบิวต์องค์ประกอบคลาส CSS หรือการแมปภายนอก

สิ่งที่น่าพิศวงเป็นตัวอย่างที่ดีของวิธีการนี้ แต่ฉันไม่ได้ใช้มันด้วยตัวเองดังนั้นฉันจึงปล่อยให้มันลงคะแนนเพื่อตัดสินใจว่าคนอื่นจะชอบหรือไม่ อย่างน้อยก็จนกว่าฉันจะมีเวลาเล่นกับมันมากขึ้น

PURE ที่ระบุว่าเป็นคำตอบอื่นเป็นอีกตัวอย่างหนึ่งของวิธีการนี้

สำหรับการอ้างอิงคุณสามารถดูchain.jsได้ แต่ดูเหมือนว่าจะไม่ได้รับการปรับปรุงมากนักตั้งแต่รีลีสดั้งเดิม สำหรับข้อมูลเพิ่มเติมเกี่ยวกับมันดูhttp://javascriptly.com/2008/08/a-better-javascript-template-engine/


0

Dropboxโดยใช้แม่แบบเอนจิ้นของ John Resigบนเว็บไซต์ มีการแก้ไขเล็กน้อยคุณสามารถตรวจสอบในไฟล์ jsของดรอปบ็อกซ์นี้ได้ ค้นหาไฟล์นี้เพื่อหา tmpl และคุณจะได้รหัสของเครื่องมือเทมเพลต

ขอบคุณ หวังว่ามันจะมีประโยชน์สำหรับใครบางคน


0

ขณะนี้ฉันกำลังใช้กรอบงานเทมเพลต HTML หลายรายการ กรอบงานนี้ทำให้การนำเข้าข้อมูลเทมเพลตใน DOM ของคุณง่ายขึ้นมาก นอกจากนี้การสร้างแบบจำลอง MVC ที่ยอดเยี่ยม

http://www.enfusion-framework.org/ (ดูตัวอย่าง!)


-1

นอกจากนี้ยังมีการเขียนใหม่ของ PURE โดย beebole - jquery pure html templates - https://github.com/mpapis/jquery-pure-templates

ควรอนุญาตให้เรนเดอร์อัตโนมัติทำงานได้มากขึ้นโดยส่วนใหญ่ใช้ตัวเลือก jquery สิ่งที่สำคัญกว่าคือไม่ต้องใส่สิ่งแฟนซีลงใน HTML

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.