Есть кое-что, что я нахожу очень запутанным при работе React
.
Есть много примеров, доступных в Интернете, которые используют .js
файлы с реакцией, но многие другие используют .jsx
файлы.
Я читал о .jsx
файлах, и я понимаю, что они просто позволяют вам писать HTML-теги в вашем javascript
. Но то же самое можно записать и в .js
файлах.
Так в чем же разница между этими двумя расширениями .js
и .jsx
?
.jsx
не является обязательнымВ большинстве случаев нужен только транспортер / упаковщик, который может быть настроен не для работы с файлами JSX, а с JS! Таким образом, вы вынуждены использовать файлы JS вместо JSX.
А так как реагировать - это всего лишь библиотека для javascript, поэтому нет никакой разницы в выборе между JSX или JS. Они полностью взаимозаменяемы!
В некоторых случаях пользователи / разработчики могут также выбрать JSX вместо JS из-за выделения кода, но большинство новых редакторов также правильно отображают синтаксис реагирования в файлах JS.
источник
Теги JSX (
<Component/>
) явно не являются стандартным javascript и не имеют особого значения, например, если вы поместите их в голый<script>
тег. Следовательно, все файлы React, содержащие их, являются JSX, а не JS.По соглашению, точкой входа приложения React обычно является .js вместо .jsx, даже если оно содержит компоненты React. Это также может быть .jsx. Любые другие файлы JSX обычно имеют расширение .jsx.
В любом случае причина неоднозначности заключается в том, что в конечном итоге расширение не имеет большого значения, так как транспортер с удовольствием копает любые типы файлов, если они на самом деле являются JSX.
Мой совет: не беспокойтесь об этом.
источник
var elem = <div>Text</div>;
не является стандартным элементом HTML; он не поддерживаетappendChild
,classList
и, вероятно, другие функции HTML. Если вы хотите использовать html-теги непосредственно в javascript, лучше использовать литерал шаблона (backtick`
) вместе сinnerHtml
илиouterHtml
.Помимо упомянутого факта, что теги JSX не являются стандартным javascript, я использую расширение .jsx, потому что с ним Эммет все еще работает в редакторе - вы знаете, этот полезный плагин, который расширяет HTML-код, например, ul> li в
источник
"emmet.includeLanguages": { "javascript": "javascriptreact" }
но да, я согласен, что в коде JSX должно использоваться расширение .jsx, если это возможно.Как уже упоминалось,
JSX
это не стандартное расширение Javascript. Лучше назвать вашу точку входа приложения на основе.js
и для остальных компонентов, вы можете использовать.jsx
.У меня есть важная причина, почему я использую
.JSX
для всех имен файлов компонентов. На самом деле, в крупномасштабном проекте с огромным количеством кода, если мы установим все компоненты React с.jsx
расширением, это будет проще при переходе к различным файлам javascript по всему проекту (например, помощникам, промежуточному программному обеспечению и т. Д.), И вы знаете, что это компонент React, а не другие типы файлов javascript.источник
JSX не является стандартным JavaScript, основанным на руководстве по стилю Airbnb 'eslint' может рассмотреть этот шаблон
в качестве предупреждения, если вы назвали свой файл MyComponent.jsx, он пройдет, если только вы не отредактируете правило eslint, вы можете проверить руководство по стилю здесь
источник