Pull to refresh

Comments 31

React — придумывание проблем и их героическое решение.
«Героическое решение проблем» — это называется эволюцией. Ни одна технология не появляется идеальной, но очень важно, чтобы в ней был заложен потенциал для развития. Тогда технология дорабатывается и становится лучше.
Но это все мы уже видели в первом ангуляре. Переменные задаются через параметры, не трекаются редакторами по человечески, при более сложной логике приходится все так же возвращаться к обычному map.
Не понимаю в чем сила реакта? Зачем нужен реакт со своим JSX, когда в JS есть шаблонные строки, благодаря которым можно писать на чистом JS и не изобретать велосипед с костылями в виде плагина который преобразует JS в HTML, а потом обратно в JS. Любое приложение на реакте выглядит, как камень обросший мхом и лишайниками в виде плагинов, без которых приложение не будет работать.
Такое ощущение, что Реакт стал наследником JQuery. Такая же популярность и такой же огород плагинов…

Вы, видимо, только издалека знакомы с реактом

ну так может расскажешь, в чем же, все-таки сила реакта?
Почитайте о flux, который есть data flow для React, а также про virtual dom. JSX уже есть в статье
а шаблонные строки вставленные в DOM это не Virtual dom? flux это подход, который абсолютно так же реализуется в простом JS.
Veikedo Вы, видимо, только издалека знакомы с JS
Почитайте что такое реакт

Шаблонные строки это не virtual dom

Не стоит бомбить.
Реакт это инструмент и инструмент хороший.
Вы, конечно, можете сделать всё вышеупомянутыми шаблонными строками.
Но реакт всё же предоставляет удобные способы компоновки/композиции компонент, удобные способы параметризации компонент, lifecycle-хуки в конце концов.


Не думаю, что было бы так просто и легко оперировать обычными (пусть и шаблонными) строками.


Ну а то, что описано в статье — костыли и велосипеды и, если бы было оформлено как just for fun — был бы успех.

Ну и уже шаблонная фраза — react это V в mvc, с удобной инкапсуляцией логики отображения (и толькое её) в компоненте, без необходимости тащить лишнее во viewModel.


Хотите сделать всё на шаблонных строках — пожалуйста. Но в итоге вы всё равно изобретёте реакт/ангулар/велосипед_нейм

Вы можете конечно использовать традиционные шаблоны, но как говорят, и на Си писать можно, но очень легко отстрелить себе ногу (поэтому и придумывают Rust...). С реактом то же самое — можно без него, но с ним сложнее наломать дров и сделать совсем уж тормознутый код. Как то так.

Ну так почитайте, это очень глупый вопрос

Вы, видимо, не только плохо знакомы с реактом, но и с веб-разработкой в целом.
На счет плагинов: Каждая задача требует индивидуальный поход и набор технологий. Не бывает так, что бы всё было из коробки и подходило ко всем задачам. И «плагины» — логическая необходимость. Или вы из тех людей, которые сплошь и рядом делают велосипеды?

а вы видимо написав hello world на реакте чувствуете себя богом веб разработки.

ИМХО, плагин зайдет только тем, кто перешел с Ангуляра и хочет найти замену привычным ngRepeat и ngIf. Так-то и array.map() в JSX нормально смотрится.


Кроме того, при использовании этого babel-плагина, возникнут проблемы с линтингом:


<For each="item" in={array}>
  <div>{ item.value }</div> <!-- no-undef: item is not defined -->
</For>

В принципе можно сделать по аналогии с eslint-plugin-jsx-control-statements. Главное потом не забывать обновляться под новые реалии babel-я, но это беда любых плагинов.

Возникает ситуация, когда в js-коде пишется html, в котором пишется js-код с html.

Но тогда html будет появляться в коде то тут, то там.

В корне не верно. jsx, это синтаксический сахар для написания js в декларативном стиле, выполненный в xml стиле.
Общего у «тегов» .jsx с .html лишь то, что они оба похожи на .xml
Более корректно сравнивать .jsx с typescript или coffeescript, то есть это очередной препроцессор.
Вот именно, я устал уже повторять как попугай «jsx !== html».
Мне все больше и больше становится понятно, почему разработчики elm, purescript и компании пошли другим путем, оставив обычные функции для компоновки интерфейса.
В общем, я сделал настолько фигню, что некоторые даже не смогли пройти мимо и не заминусовать статью, чтобы она не попала на главную и её никто не увидел. Содержание статьи-то нормальное, это то, что она описывает — минусовали. Обидно, но я переживу.
Какой бы статья не была, она не заслужила того абсурда, который происходил в комментариях.
На хабре спрашивать «чо такое реакт» вверх глупости, ровно как и плюсовать только риторические фразы.
Статья то нормальная, минусуют, думаю из-за неодобрения самого подхода. Как уже отметили выше, будут проблемы с eslint. Кроме того, управляющие теги затеряются среди разметочных, будет сложнее читать. Ну и, мое мнение, суть JSX как раз в том, чтобы свободно перемежать JS и HTML и чтобы это не выглядело плохо. И оно не выглядит.

Уже прочитав заголовок я подумал про jsx-control-statements. Посмотрев содержимое всё ожидал увидеть сравнение. Не увидел. Вы рассматривали этот уже давно существующий плагин? Для него даже eslint-плагин есть.

Сегодня я узнал о jsx-control-statements, день прошел не зря.


В оправдание автора могу заметить, что это решение по наивным запросам типа "forEach for React" или "If component for React" так просто не находится. Разве что нашел его упоминание где-то в issue к React

Есть предположение, что автор тоже не смог нагуглить. Иначе зачем повторять функционал — непонятно.

По правде говоря, синтаксис плагина мог быть и повкуснее. Скажем зачем слово condition? 8 символов на пустом месте. Зачем "задепрекейтили" <Else/>? В тернарном операторе оно есть. Даже в XSLT оно есть. Почему <Choise/> устроен именно так? Мне бы больше подошёл какой-нибудь <Switch/> с возможностью единожды указать, что мы сверяем, дабы не плодить копипасту. И т.д…


Но даже такой плагин мне показался куда приятнее глазу, чем адская смесь декларативного HTML и императивного JS, с примесью функциональщины (все эти .map-ы). Видимо годы XSLT меня избаловали.

Где это вы в XSLT слово тэг <else/> видели?..


А <Choise/>, видимо, прямо из XSLT в эту библиотеку и пришел

Где это вы в XSLT слово тэг <else/> видели?..

Он там называется иначе: <xsl:otherwise>.


А <Choise/>, видимо, прямо из XSLT в эту библиотеку и пришел

Да, вы правы. Похоже всё именно так. В нём <Choise/> есть <Otherwise/>. Тем более не понимаю, нафига <Else/> отменили.

В обсуждаемой тут jsx-control-statements конструкция Otherwise также присутствует.

Угу, я поправился выше. Но использовать связку choose -> when + otherwise вместо ?:, либо же if condition=... + if condition=!... ― я бы не стал. Слишком громоздко и ещё 1 уровень вложенности на пустом месте.

Спасибо, я не знал о существовании этого плагина. Ну изобрел велосипед — с кем не бывает =) Статистика установок jsx-control-statements показывает, что достаточно большое количество людей используют это решение. Это меня порадовало.
Only those users with full accounts are able to leave comments. Log in, please.