Hay algo que encuentro muy confuso cuando trabajo React
.
Hay muchos ejemplos disponibles en Internet que usan .js
archivos con react pero muchos otros usan .jsx
archivos.
He leído sobre .jsx
archivos y entiendo que simplemente te permiten escribir etiquetas html dentro de tu javascript
. Pero lo mismo se puede escribir en .js
archivos también.
Entonces, ¿cuál es la diferencia real entre estas dos extensiones .js
y .jsx
?
.jsx
no es un requisitoEn la mayoría de los casos, solo es necesario el transpiler / bundler, que puede no estar configurado para funcionar con archivos JSX, ¡sino con JS! Por lo tanto, se ve obligado a usar archivos JS en lugar de JSX.
Y dado que reaccionar es solo una biblioteca para javascript, no hace ninguna diferencia que elija entre JSX o JS. ¡Son completamente intercambiables!
En algunos casos, los usuarios / desarrolladores también pueden elegir JSX en lugar de JS, debido al resaltado del código, pero la mayoría de los editores más nuevos también están viendo la sintaxis de reacción correctamente en los archivos JS.
fuente
Las etiquetas JSX (
<Component/>
) claramente no son JavaScript estándar y no tienen un significado especial si las coloca dentro de una<script>
etiqueta desnuda, por ejemplo. Por lo tanto, todos los archivos React que los contienen son JSX y no JS.Por convención, el punto de entrada de una aplicación React suele ser .js en lugar de .jsx aunque contenga componentes React. También podría ser .jsx. Cualquier otro archivo JSX generalmente tiene la extensión .jsx.
En cualquier caso, la razón por la que hay ambigüedad es porque, en última instancia, la extensión no importa mucho, ya que el transpilador felizmente mastica cualquier tipo de archivos siempre que sean en realidad JSX.
Mi consejo sería: no te preocupes por eso.
fuente
var elem = <div>Text</div>;
no es un elemento html estándar; no es compatibleappendChild
,classList
y probablemente otras características html. Si desea etiquetas html directamente en javascript, es mejor usar el literal de plantilla (la tecla de retroceso`
) junto coninnerHtml
oouterHtml
.Además del hecho mencionado de que las etiquetas JSX no son javascript estándar, la razón por la que uso la extensión .jsx es porque con ella Emmet todavía funciona en el editor, ya sabes, ese complemento útil que expande el código html, por ejemplo ul> li en
fuente
"emmet.includeLanguages": { "javascript": "javascriptreact" }
pero sí, estoy de acuerdo en que el código JSX debería usar la extensión .jsx si es posible.Como otros mencionados
JSX
no es una extensión estándar de Javascript. Es mejor nombrar su punto de entrada de la aplicación en función.js
de los demás componentes que puede usar.jsx
.Tengo una razón importante por la que estoy usando
.JSX
los nombres de todos los componentes. En realidad, en un proyecto a gran escala con gran cantidad de código, si configuramos todos los componentes de React con.jsx
extensión, será más fácil navegar a diferentes archivos javascript en todo el proyecto (como ayudantes, middleware, etc.) y usted sabe que esto es un componente React y no otros tipos del archivo javascript.fuente
JSX no es JavaScript estándar, basado en la guía de estilo de Airbnb 'eslint' podría considerar este patrón
como advertencia, si nombró su archivo MyComponent.jsx, pasará, a menos que si edita la regla eslint, puede consultar la guía de estilo aquí
fuente