Jade กับ EJS ข้อดีข้อเสียของแต่ละข้อคืออะไรและแต่ละจุดออกแบบมาเพื่ออะไร
มีเอ็นจิ้นเทมเพลตที่เข้ากันได้กับ Express อื่น ๆที่ดีหรือไม่และเพราะเหตุใด
Jade กับ EJS ข้อดีข้อเสียของแต่ละข้อคืออะไรและแต่ละจุดออกแบบมาเพื่ออะไร
มีเอ็นจิ้นเทมเพลตที่เข้ากันได้กับ Express อื่น ๆที่ดีหรือไม่และเพราะเหตุใด
คำตอบ:
ฉันใช้หยกมาก่อน ข้อดีของ Jade คือคุณมีไวยากรณ์ที่สั้นลงซึ่งหมายความว่าคุณสามารถพิมพ์ได้เร็วขึ้น block
ในหยกที่มีประสิทธิภาพสวยซึ่งสามารถช่วยฉันมากเมื่อต้องรับมือกับโค้ด HTML ที่ซับซ้อน
ในทางกลับกันมันยากที่จะทำสิ่งง่ายๆใน Jade เช่นการเพิ่มคลาสลงใน DIV โดยใช้เงื่อนไข if ง่ายๆ ฉันต้องใส่อะไรแบบนี้
- if (isAdmin)
div.admin.user
- else
div.user
Jade ยังไม่แยกความแตกต่างระหว่างแท็กและตัวแปรที่ทำให้โค้ดสับสนมาก (อย่างน้อยสำหรับฉัน)
a(href='/user/' + user.id)= user.name
Jade ยังไม่เหมาะกับนักออกแบบ เพื่อนนักออกแบบของฉันมักจะให้ HTML และ CSS แก่ฉัน (พวกเขาเปลี่ยนมาใช้ LESS เมื่อไม่นานมานี้ แต่ยังต้องการใช้ HTML) และด้วยเหตุนี้หากฉันใช้ Jade ฉันจำเป็นต้องแปลง HTML เป็น Jade นอกจากนี้ใน Jade เราจำเป็นต้องใช้การเยื้องดังนั้นหากโครงสร้าง HTML ของคุณซับซ้อนโค้ดของคุณจะดูแย่ (โดยเฉพาะตาราง) บางครั้งฉันไม่รู้ด้วยซ้ำว่าตัวเองอยู่ในระดับไหน
table
thead
tr
td
a
img
tr
td
tbody
tr
td
เมื่อเร็ว ๆ นี้ฉันได้เปลี่ยนไปใช้ EJS และฉันก็มีความสุขกับมัน ใกล้เคียงกับ HTML แท้มากและใช้ไวยากรณ์เดียวกันกับของเอนจินเทมเพลตฟรอนต์เอนด์ที่ฉันใช้ (เทมเพลตขีดล่าง) ฉันต้องบอกว่าทุกอย่างง่ายขึ้นด้วย EJS ฉันไม่ต้องทำการแปลงทั้งหมดเมื่อได้รับเทมเพลต HTML จากเพื่อนนักออกแบบของฉัน สิ่งที่ฉันต้องทำคือแทนที่ส่วนไดนามิกด้วยตัวแปรที่ส่งผ่านจาก ExpressJS สิ่งที่ทำให้ฉันคลั่งไคล้เมื่อใช้ Jade ได้รับการแก้ไขใน EJS
<div class="<%= isAdmin? 'admin': '' %> user"></div>
และฉันสามารถรู้ได้ว่าอะไรคืออะไรกับ EJS
<a href="/user/<%= user.id %>"><%= user.name %></a>
หากคุณพลาดไวยากรณ์สั้น ๆ ของ Jade (เช่นฉัน) คุณสามารถรวม Zen-Coding และ EJS ซึ่งจะช่วยเร่งความคืบหน้าโดยทั่วไปได้ เรื่องประสิทธิภาพไม่เห็นความแตกต่าง
อย่างไรก็ตาม EJS ไม่ได้ทรงพลังเท่า Jade แต่ก็ไม่มีบล็อกโดยค่าเริ่มต้น (ผู้ชายคนนี้ใช้คุณสมบัติบล็อกสำหรับ EJS https://github.com/RandomEtc/ejs-locals )
ดังนั้นจึงขึ้นอยู่กับคุณว่าจะเลือกอะไรก็ได้ที่ทำให้คุณสบายใจ แต่ถ้าคุณจะใช้เครื่องมือเทมเพลตอื่นสำหรับส่วนหน้าเหมือนฉันจะดีกว่าถ้าคุณใช้สิ่งเดียวกันสำหรับทั้งสองด้าน
อัปเดต 16 ธันวาคม 2556: เมื่อเร็ว ๆ นี้ฉันได้เปลี่ยนจาก EJS เป็น Swig (ซึ่งมีแนวคิดคล้ายกับ Jinja2 ใน Python world) เหตุผลหลักคือการขาดบล็อกใน EJS แม้จะได้รับความช่วยเหลือจากejs-locals
. Swig ยังใช้ HTML ธรรมดาสำหรับเทมเพลตและฟีเจอร์เจ๋ง ๆ มากมายที่เอ็นจินเทมเพลตควรมีเช่นตัวกรองและแท็กที่ EJS ไม่มี
Jade
หนึ่งหรือสองปีที่แล้ว บางทีมันอาจจะดีขึ้นในตอนนี้ อย่างไรก็ตามการจัดอันดับจุดแรกของฉันมันจะไม่ง่ายเลยที่จะไปรอบ ๆ นั้น
ฉันจะไม่บอกว่าคนหนึ่งดีกว่าอีกคน พวกเขาแตกต่างกันแน่นอน แต่ "ดีกว่า" ค่อนข้างสัมพันธ์กัน
ฉันชอบ EJS เพราะฉันคิดว่า HTML ไม่ได้แย่เกินไปแถมยังช่วยให้ฉันทำงานร่วมกับคนอื่นได้โดยที่พวกเขาไม่ต้องเรียนรู้ Jade
อย่างไรก็ตาม Jade ค่อนข้างสะอาดและสร้างรหัสที่เรียบร้อยในมุมมองของคุณ
เลือกสิ่งที่คุณรู้สึกสบายใจกว่า