Pull to refresh

Comments 10

brainfuck какой-то
  <.div(^.cls := "container",
      <.h1("Spotify Track Listing"),
      <.div(^.cls := "form-group",
        <.label(^.`for` := "artist", "Artist"),
        <.div(^.cls := "row", ^.id := "artist",
          <.div(^.cls := "col-xs-10",
            <.input(^.`type` := "text", ^.cls := "form-control",
              ^.value := s.artistInput, ^.onChange ==> updateArtistInput
            )
          ),
          <.div(^.cls := "col-xs-2",
            <.button(^.`type` := "button", ^.cls := "btn btn-primary custom-button-width",
              ^.onClick --> searchForArtist(s.artistInput),
              ^.disabled := s.artistInput.isEmpty,
              "Search"
            )
          )
        )
      ),

Знаете, мне тоже не нравится такая нотация.


Мне кажется, что даже JSX в разы лучше читается в js и вообще используется, чем ваша эта нотация аля JSX. Лучше уж тогда использовать стандартные функции реакта, чем этот недо JSX.

При всей моей нелюбви к творчеству Ли Хаойи, это решение не самое худшее (scalatags) — типобезопасное и может достаточно просто быть расширено. Конечно, читать не слишком просто, но возможность мне, как бэкендщику, перестать дебажить HTML стоит немало. Опять же, JSX/HTML транслируется в эту муть достаточно просто.

Дело не в scalatags, а в обертке над scalatags с этими ^ < --> символами. Сам scalatags читается очень легко и просто. А вот scalatags в scala-js-react — тот еще адок. Почти все, с кем я общался по поводу scala-js при виде такого синтаксиса приходят в ужас.
Однако, в scala-js-react можно не использовать такой синтаксис, а использовать стандартный scalatags синтаксис. Я бы порекомендовал для вводной статьи использовать именно его, дабы не распугивать людей.

нафига попу баян (react)? со Scala.js все можно сделать без скакания с React, получив то же, много проще, сильно умнее и красивее
https://github.com/ThoughtWorksInc/Binding.scala
https://github.com/OlivierBlanvillain/monadic-html

Представленные библиотеки и React подходят к изменению DOM с разных сторон.
В реакте при изменении состояния приложения делается новый рендер в память, потом делается дифф со старым рендером, в результате которого получаем некий набор действий, как получить из старого дома новый. И накладываем эти действия на реальный дом.
В реактивных библиотеках совсем другой подход. Там есть реактивные потоки, которые как-то забиндены на некоторые участки дом. Если прилетело новое значение в поток (изменился Var), то элемент дома просто заново отрисуетсяи вставится.
Не охота разводить холивар, но эти подходы очень разные. И на текущий момент react-like библиотек на pure scala просто нет. Единственный вариант — делать обертки над react или react-like библиотеками.

Ну да, статья от создателя либы несомненный пруф ;)

критика должна быть по сути обсуждения; критика же личности оппонента спора считается дурным тоном ;)
Sign up to leave a comment.

Articles