Автор оригинала: Cory House.
Успокойся. Охватить эволюцию.
Когда отреагировали, многие люди взяли один взгляд на JSX и потеряли свои умы. Что эти угловые скобки делают в JavaScript?! Как насчет разделения опасений? У Facebook ничего не научился от сообщества?
Facebook: Rethink установлена лучшая практика ™
Как и многие, моя первоначальная реакция на React’s JSX был скептически, чтобы сказать наименее. И пока я пришел к любви JSX, в любое время я представляю его новым разработчике, я чувствую, что я чувствую, как я демонстрирую мой уродливый ребенок.
Несмотря на начальную драму, я пришел, чтобы понять, что JSX не такая радикальная идея в конце концов. На самом деле это просто другая сторона монеты Отказ Это естественный эволюционный переход. Чтобы оценить почему урок истории в порядке.
Фаза 1: ненавязчивый JavaScript
Помните старые добрые времена jQuery? Эра ненавязчивый JavaScript был в полном цветении. Наш HTML был чистым HTML. Наш JavaScript был чистый JavaScript. Наши проблемы были идеально разделены.
Мы бы написали HTML подобное:
Тогда мы написали JavaScript, как это:
$('.hide').click(function() { $(this).hide(); } #победить. Верно? Не совсем.
Это казалось отличной идеей. Наш HTML полностью чистый! Но тогда мы поняли некоторые проблемы: ээ, как я могу сказать, что эти две линии взаимосвязаны? Ответ: Я не могу, если я не читаю каждую линейку JavaScript. С помощью этой картины Вы не можете изменить линию разметки без проверки каждой линейки JavaScript, чтобы убедиться, что вы не ломаете селектор. Видите ли, здесь нет фактического разделения здесь. Конечно, JS и HTML находятся в отдельных файлах, но эти две технологии присоединены в бедре. Они должны двигаться в LockStep или приложение будет сбиваться.
Строго разделения HTML и JS фактически привели к приложениям, которые были тяжелее поддерживать и отлаживать. Каждый раз, когда вы хотите изменить линию разметки, вам пришлось беспокоиться о нарушении селектора JQuery. Возможно, если мы расслабили нашу религиозную преданность отделению проблем, мы могли бы облегчить часть этой боли? Это произошло в фазе 2 …
Фаза 2: двусторонняя связывание
Когда интерфейсные разработчики увидели двустороннюю привязку в нокауте и угловой, это было откровение. Многие из нас бросили нашу религиозную преданность для разделения опасений и приняли силу объявления привязки в HTML. Когда данные изменялись, пользовательский интерфейс изменен. Когда UI изменился, данные изменились. Так чисто. Так просто.
Конечно, каждая библиотека и рамки имеют собственный способ сделать это сделать, но все они принципиально делают то же самое. Просто рассмотрим этот простой пример итерации над массивом в нескольких популярных рамках:
//Angular//Ember {{#each user in users}} //Knockout data-bind="foreach: users"
Но что-то интересное в игре здесь. Немногие признали очень фундаментальную проблему: Мы эффективно помещаем JavaScript в нашем HTML. Это не разделение проблем. Все эти подходы делают то же самое: они делают HTML более мощным путем добавления дополнительной проприетарной разметки. Эта разметка эффективно анализируется как JavaScript. И теперь, когда мы, наконец, удобные смешивающиеся JS и HTML таким образом, пришло время реагировать на шаг и показать нам другую сторону монеты …
Фаза 3: JSX
React’s JSX не является радикальным сдвигом. Это просто плод простого реализации:
По общему признанию, мы не говорили это вслух. Но обнимая угловой, нокаут и Ember сделали наши новые предпочтения. Как я уже установил выше, запись кода связывания данных в HTML эффективно помещает JS в HTML. Но Если мы собираемся смешиваться, почему мы должны выбирать, чтобы увеличить технологию, как слабая и слабаясь HTML? Браузеры свободно интерпретируют HTML с начала времени. Итак, HTML логическая основа для объявления связывания данных, петли и условной логики?
Facebook распознал, что JavaScript был более логичным и мощным технологией для обработки этих двух смешанных проблем. Богоханы сводится к этому:
Преимущества этого движения являются многогранные и не обязательно ценятся до тех пор, пока не попробуете работать с React и JSX. Jsx ract jsx принципиально превосходит все “фазы 2” в стиле структуры выше для нескольких простых причин:
Ошибки времени компиляции
Когда вы делаете опечатки в HTML, вы обычно не имеете представления, где вы облажались. Во многих случаях это бесшумная ошибка времени выполнения. Например, если вы вводите N-Repeat вместо NG-повтора при работе с угловым, ничего не произойдет. Та же история с Data-BND VS Data-Bind в нокауте. В любом случае ваше приложение не работает во время выполнения. Это разочаровывает.
Напротив, когда вы делаете опечатки в JSX, он не скомпилируется. Забыл закрыть это тег
ReactifyError: /components/header.js: Parse Error: Line 23: Expected corresponding JSX closing tag for li while parsing file: /components/header.js
С JSX эта подробная обратная связь, наконец, реальностью! Трудно переоценить, что это за большая победа. Эта быстрая петля обратной связи значительно увеличивает производительность. Как я уже обсуждаю в моем курсе чистого кода, Хорошо спровоцированные решения Fake Fast Отказ
Используйте полную мощность JavaScript
Составление вашей разметки в JavaScript означает, что вы можете наслаждаться всей мощностью JavaScript при работе с разметкой вместо небольшого проприетарного подмножества, которое предлагается в пределах HTML-ориентированных каркасов, таких как угловой и нокаут.
Реагируйте избежать накладных расходов обучения еще одним запатентованным способом объявить цикл и базовую условному логику. Как вы можете видеть выше в разделе Фаза 2, каждая двусторонняя структура связывания использует свой собственный специальный синтаксис. Напротив, JSX выглядит почти идентично HTML, и он использует простое ol JavaScript для таких вещей, как условные и петли. В экосистеме, как фрагментированные как JavaScript, не нужно изучать еще один проприетарный синтаксис связывания данных – это хорошая победа.
И поскольку вы пишете свою разметку в том же файле, что и связанные данные JavaScript, многие IDE дадут вам поддержку IntelliSense, когда вы ссылаетесь на ваши функции. Подумайте о том, как часто вы сделали опечатки при обращении к функции в HTML-ориентированных каркасах.
Последние мысли
JSX не какая-то дикая идея. Это естественная прогрессия. Так что старайтесь не утроться.
Как и большинство форм эволюции, это четкое улучшение.
Хотите узнать больше? Ознакомьтесь с моим новым курсом « Строительные приложения с реагированием и флюсом » на множестве.
Chime In на Reddit или Хакеров Новости Отказ
Дом Кори Является ли автор « построение приложений с реагированием и флюсом », « Чистый код: Написание кода для людей «И несколько других курсов по множеству. Он является архитектором программного обеспечения в Vinsolutions и Поезда разработчиков программного обеспечения на международном уровне О программных методах, таких как интерфейс разработки и чистого кодирования. CORY – Microsoft MVP, эксперт для разработчика Teleerik, а основатель OutlierDeveloper.com Отказ
Оригинал: “https://www.freecodecamp.org/news/react-s-jsx-the-other-side-of-the-coin-2ace7ab62b98/”