React.js stellt JSX als XHTML-ähnliche Syntax zum Erstellen eines Baums von Komponenten und Elementen bereit. JSX wird in Javascript kompiliert. Anstatt Schleifen oder Bedingungen in JSX bereitzustellen, verwenden Sie Javascript direkt:
<ul>
{list.map((item) =>
<li>{item}</li>
)}
</ul>
Was ich noch nicht erklären konnte, ist, warum dies als gut angesehen wird, wenn analoge Konstrukte in JSP als schlecht angesehen werden?
So etwas in JSP
<ul>
<% for (item in list) { %>
<li>${item}</li>
<% } %>
</ul>
wird als ein Lesbarkeitsproblem angesehen, das mit Tags wie gelöst werden soll <c:forEach>
. Die Gründe für JSTL-Tags scheinen auch für JSX zutreffend zu sein:
- Es ist etwas einfacher zu lesen, wenn Sie nicht zwischen XHTML-ähnlicher Syntax (spitze Klammern, Verschachtelung) und Java / Javascript (Curlies, Kommas, Parens) wechseln.
- Wenn Sie die vollständige Sprache und Plattform für die Verwendung innerhalb der Rendering-Funktion zur Verfügung haben, können Sie weniger davon abhalten, Logik einzufügen, die nicht dazu gehört.
Die einzigen Gründe, warum JSX anders ist, sind:
In Java hatten Sie einen Anreiz, etwas Falsches zu tun - JSP wurde bei laufendem Betrieb neu geladen, daher war es verlockend, Code in JSPs einzufügen, um einen Wiederherstellungs- / Neustartzyklus zu vermeiden. Die Wartbarkeit wurde für die sofortige Produktivität geopfert. Das Bannen von Scriptlets und das Beschränken auf einen festen Satz von Vorlagenkonstrukten war ein wirksames Mittel zur Durchsetzung der Wartbarkeit. In der JS-Welt gibt es keine derartigen Verzerrungen.
Die JSP- und Java-Syntax ist umständlich
<% ... %>
, da Java-Code von der Elementgenerierung unterschieden werden kann und die native Java-Syntaxforeach
(bis vor kurzem) weder ein Konzept noch erstklassige Funktionen enthält. Der Syntaxnachteil bei der Verwendung von nativem Javascript für Schleifen und Bedingungen in JSX ist (meiner Meinung nach) ungleich Null, aber nicht so schlimm wie bei JSP und wahrscheinlich nicht schlimm genug, um die Einführung von JSX-spezifischen Elementen für Schleifen und Bedingungen zu rechtfertigen.
Fehlt mir noch etwas?