React.js ให้ JSX เป็นไวยากรณ์ที่คล้ายกับ XHTML สำหรับสร้างโครงสร้างของส่วนประกอบและองค์ประกอบ JSX คอมไพล์กับ Javascript และแทนที่จะให้ลูปหรือเงื่อนไขใน JSX ที่เหมาะสมคุณใช้ Javascript โดยตรง:
<ul>
{list.map((item) =>
<li>{item}</li>
)}
</ul>
สิ่งที่ฉันยังไม่สามารถอธิบายได้เป็นเพราะเหตุใดจึงถือว่าดีถ้าโครงสร้างแบบอะนาล็อกคล้ายคลึงกันถือว่าไม่ดีใน JSP
บางอย่างเช่นนี้ใน JSP
<ul>
<% for (item in list) { %>
<li>${item}</li>
<% } %>
</ul>
<c:forEach>
ถือเป็นปัญหาการอ่านจะได้รับการแก้ไขได้ด้วยแท็กเช่น เหตุผลที่อยู่เบื้องหลังแท็ก JSTL ก็ดูเหมือนว่าพวกเขาสามารถนำไปใช้กับ JSX:
- มันง่ายกว่าที่จะอ่านเมื่อคุณไม่สลับระหว่าง XHTML คล้ายไวยากรณ์ (วงเล็บมุม, การซ้อน) และ Java / Javascript (curlies, จุลภาค, เครื่องหมาย)
- เมื่อคุณมีภาษาและแพลตฟอร์มเต็มรูปแบบสำหรับใช้ในฟังก์ชั่นการเรนเดอร์คุณจะมีกำลังใจน้อยลงในการวางตรรกะในสิ่งที่ไม่ได้อยู่ในนั้น
เหตุผลเดียวที่ฉันคิดได้ว่าทำไม JSX ถึงแตกต่างคือ:
ใน Java คุณมีแรงจูงใจที่จะทำสิ่งที่ผิด - JSP จะถูกโหลดซ้ำร้อนแรงดังนั้นจึงเป็นการดึงดูดให้ใส่รหัสใน JSP เพื่อหลีกเลี่ยงวงจรการสร้างใหม่ / รีสตาร์ท การบำรุงรักษาถูกเสียสละเพื่อผลิตผลทันที การแบนสคริปต์สคริปต์และ จำกัด การสร้างเทมเพลตคงที่เป็นวิธีการบังคับบำรุงรักษาได้อย่างมีประสิทธิภาพ ไม่มีการบิดเบือนในโลกของ JS
JSP และ Java ไวยากรณ์เป็น clunky กับพิเศษ
<% ... %>
เพื่อแยกรหัส Java จากการสร้างองค์ประกอบและด้วยไวยากรณ์พื้นเมืองของ Java ขาดforeach
แนวคิดหรือฟังก์ชั่นชั้นหนึ่ง (จนกระทั่งเมื่อเร็ว ๆ ) บทลงโทษทางไวยากรณ์ของการใช้จาวาสคริปต์ดั้งเดิมสำหรับลูปและเงื่อนไขใน JSX นั้นไม่ใช่ศูนย์
มีอะไรอีกบ้างที่ฉันขาดไป?