Es gibt etwas, das ich bei der Arbeit sehr verwirrend finde React
.
Im Internet gibt es viele Beispiele, die .js
Dateien mit Reaktion verwenden, aber viele andere verwenden .jsx
Dateien.
Ich habe über .jsx
Dateien gelesen und mein Verständnis ist, dass Sie damit nur HTML-Tags in Ihre schreiben können javascript
. Das Gleiche kann aber auch in .js
Dateien geschrieben werden.
Was ist der tatsächliche Unterschied zwischen diesen beiden Erweiterungen .js
und .jsx
?
.jsx
nicht erforderlich istIn den meisten Fällen wird nur der Transpiler / Bundler benötigt, der möglicherweise nicht für die Arbeit mit JSX-Dateien konfiguriert ist, sondern mit JS! Sie müssen also JS-Dateien anstelle von JSX verwenden.
Und da react nur eine Bibliothek für Javascript ist, macht es für Sie keinen Unterschied, zwischen JSX oder JS zu wählen. Sie sind komplett austauschbar!
In einigen Fällen wählen Benutzer / Entwickler aufgrund der Code-Hervorhebung möglicherweise auch JSX anstelle von JS, aber die meisten neueren Editoren zeigen die Reaktionssyntax auch in JS-Dateien korrekt an.
quelle
JSX-Tags (
<Component/>
) sind eindeutig kein Standard-Javascript und haben keine besondere Bedeutung, wenn Sie sie beispielsweise in ein nacktes<script>
Tag einfügen. Daher sind alle React-Dateien, die sie enthalten, JSX und nicht JS.Konventionell ist der Einstiegspunkt einer React-Anwendung normalerweise .js anstelle von .jsx, obwohl sie React-Komponenten enthält. Es könnte genauso gut .jsx sein. Alle anderen JSX-Dateien haben normalerweise die Erweiterung .jsx.
In jedem Fall besteht der Grund für die Mehrdeutigkeit darin, dass die Erweiterung letztendlich keine große Rolle spielt, da der Transpiler alle Arten von Dateien glücklich verarbeitet, solange es sich tatsächlich um JSX handelt.
Mein Rat wäre: Mach dir keine Sorgen.
quelle
var elem = <div>Text</div>;
ist kein Standard-HTML-Element. er nicht unterstütztappendChild
,classList
und wahrscheinlich auch andere HTML - Funktionen. Wenn Sie HTML-Tags direkt in Javascript verwenden möchten, ist es besser, das Vorlagenliteral (das Backtick`
) zusammen mitinnerHtml
oder zu verwendenouterHtml
.Neben der erwähnten Tatsache, dass JSX-Tags kein Standard-Javascript sind, verwende ich die Erweiterung .jsx, weil Emmet damit immer noch im Editor funktioniert - Sie wissen, dieses nützliche Plugin, das HTML-Code erweitert, zum Beispiel ul> li in
quelle
"emmet.includeLanguages": { "javascript": "javascriptreact" }
aber ja, ich stimme zu, dass JSX-Code nach Möglichkeit die Erweiterung .jsx verwenden sollte.Wie bereits erwähnt,
JSX
handelt es sich nicht um eine Standard-Javascript-Erweiterung. Es ist besser, Ihren Einstiegspunkt der Anwendung basierend auf.js
und für die übrigen Komponenten zu benennen , die Sie verwenden können.jsx
.Ich habe einen wichtigen Grund, warum ich
.JSX
für alle Dateinamen der Komponente verwende. Wenn wir in einem Großprojekt mit einer großen Menge an Code alle React-Komponenten mit der.jsx
Erweiterung festlegen , ist es tatsächlich einfacher, zu verschiedenen Javascript-Dateien im gesamten Projekt zu navigieren (z. B. Helfer, Middleware usw.), und Sie wissen, dass dies der Fall ist a React Component und nicht andere Typen der Javascript-Datei.quelle
JSX ist kein Standard-JavaScript, basierend auf dem Airbnb-Styleguide 'eslint' könnte dieses Muster berücksichtigt werden
Als Warnung, wenn Sie Ihre Datei MyComponent.jsx benannt haben, wird sie übergeben, es sei denn, Sie bearbeiten die Eslint-Regel, können Sie den Styleguide hier überprüfen
quelle