Jest coś, co wydaje mi się bardzo mylące podczas pracy React
.
Istnieje wiele przykładów dostępnych w Internecie, które wykorzystują .js
pliki z reakcją, ale wiele innych używa .jsx
plików.
Przeczytałem o .jsx
plikach i rozumiem, że pozwalają one po prostu pisać tagi HTML w twoim pliku javascript
. Ale to samo można również zapisać w .js
plikach.
Jaka jest rzeczywista różnica między tymi dwoma rozszerzeniami .js
a .jsx
?
.jsx
nie jest wymaganeW większości przypadków jest to tylko potrzeba transpilatora / bundlera, który może nie być skonfigurowany do pracy z plikami JSX, ale z JS! Jesteś zmuszony używać plików JS zamiast JSX.
A ponieważ reaktor to tylko biblioteka dla javascript, nie ma znaczenia, czy wybierzesz między JSX a JS. Są całkowicie wymienne!
W niektórych przypadkach użytkownicy / programiści mogą również wybrać JSX zamiast JS, ze względu na wyróżnianie kodu, ale większość nowszych edytorów również poprawnie wyświetla składnię reagowania w plikach JS.
źródło
Znaczniki JSX (
<Component/>
) najwyraźniej nie są standardowym językiem javascript i nie mają specjalnego znaczenia, jeśli na przykład umieścisz je w samym<script>
tagu. Dlatego wszystkie zawierające je pliki React to JSX, a nie JS.Umownie punktem wejścia aplikacji React jest zwykle .js zamiast .jsx, nawet jeśli zawiera on składniki React. Równie dobrze może to być .jsx. Wszelkie inne pliki JSX mają zwykle rozszerzenie .jsx.
W każdym razie powodem tej dwuznaczności jest to, że ostatecznie rozszerzenie nie ma większego znaczenia, ponieważ transpiler szczęśliwie omija wszelkiego rodzaju pliki, o ile faktycznie są one JSX.
Moja rada brzmi: nie martw się o to.
źródło
var elem = <div>Text</div>;
nie jest standardowym elementem HTML; nie obsługujeappendChild
,classList
i prawdopodobnie inne funkcje HTML. Jeśli chcesz tagów HTML bezpośrednio w javascript, lepiej użyć literału szablonu (backtick`
) razem zinnerHtml
lubouterHtml
.Oprócz wspomnianego faktu, że tagi JSX nie są standardowym javascriptem, używam rozszerzenia .jsx, ponieważ z nim Emmet nadal działa w edytorze - wiesz, ta przydatna wtyczka, która rozwija kod HTML, na przykład ul> li w
źródło
"emmet.includeLanguages": { "javascript": "javascriptreact" }
ale tak, zgadzam się, że kod JSX powinien używać rozszerzenia .jsx, jeśli to możliwe.Jak wspomniano,
JSX
nie jest standardowym rozszerzeniem Javascript. Lepiej nazwać swój punkt wejścia aplikacji w oparciu o.js
pozostałe komponenty, których możesz użyć.jsx
.Mam ważny powód, dla którego używam
.JSX
wszystkich nazw plików składników. W rzeczywistości, w dużym projekcie z dużą ilością kodu, jeśli ustawimy cały komponent React z.jsx
rozszerzeniem, łatwiej będzie nawigować do różnych plików javascript w całym projekcie (np. Pomocników, oprogramowania pośredniego itp.) I wiesz, że to jest składnik React, a nie inne typy pliku javascript.źródło
JSX nie jest standardowym JavaScriptem, opartym na przewodniku po stylu Airbnb, „eslint” może wziąć pod uwagę ten wzorzec
jako ostrzeżenie, jeśli nazwiesz plik MyComponent.jsx, przejdzie on, chyba że jeśli edytujesz regułę eslint, możesz sprawdzić przewodnik po stylu tutaj
źródło