LINUX.ORG.RU

Классная статья о том почему React - зло.

 , ,


1

2

Авторша начинает с феминизма, проводит аналогии с миром Вархаммер 40000, рассказывает историю фреймворка и заканчивает манифестом Fight Back. Отличное чтиво 10/10

https://www.sonniesedge.net/posts/react/

Ответ на: комментарий от anonymous

Что сказать-то хотел?

Большая императивная какаха прямо посреди вашего радужного декларативного мира

На пару десятилетий раньше

А конкретнее? Что за технология?

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Большая императивная какаха прямо посреди вашего радужного декларативного мира

Лучше мир с какахами, чем мир — какаха.

А конкретнее? Что за технология?

Какая технология?

https://en.wikipedia.org/wiki/Declarative_programming

anonymous ()
Ответ на: комментарий от gnulag

Суть манифеста в том чтобы призвать к действию, а не аргументировать. Аргументы были раньше. Лично мне эта статья понравилась как творческое осмысление происходящего в индустрии. Большая часть важных для меня аргументов в секции история реакта.

pineapple ()
Ответ на: комментарий от anonymous

Лучше мир с какахами

Чтобы уйти от императива они нагородили свой ЯП в шаблонах, свой формат файла (.vue), жирный компилер (vue-cli) и жирнющий инструмент для проверки связности шаблона и модели (vetur).. И все-равно вышла императивная какаха. TypeScript TSX брезгливо мочится на этот цирк.

https://en.wikipedia.org/wiki/Declarative_programming

Ну ок. HTML и его друзей отметаем, т.к. задачи биндинга в них не ставится. Возьмем QML

https://en.wikipedia.org/wiki/QML#Property_bindings

И что мы видим: «QML extends a standards-compliant JavaScript engine, so any valid JavaScript expression can be used as a property binding. Bindings can access object properties, make function calls, and even use built-in JavaScript objects like Date and Math»

Снова какаха! Ну как же так. Пластмассовый мир победил?

Deleted ()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от Deleted

Чтобы уйти от императива они нагородили свой ЯП в шаблонах, свой формат файла (.vue), жирный компилер (vue-cli) и жирнющий инструмент для проверки связности шаблона и модели (vetur).. И все-равно вышла императивная какаха. TypeScript TSX брезгливо мочится на этот цирк.

Ты мне втираешь, что в реакте меньше нагорожено или что?

Снова какаха! Ну как же так. Пластмассовый мир победил?

Я нифига опять не понял, что ты мне втираешь? Что если в qml можно использовать жабоскрипт, то императивщина внезапно стала лучше декларативщины? Или ты ищешь пример декларативщины без жабоскритпа? Любой первый шаблонизатор посмотри.

anonymous ()
Ответ на: комментарий от anonymous

Ты мне втираешь, что в реакте меньше нагорожено или что?

Именно так. JSX это просто необычно записанный вызов функции React.createElement с аттрибутами-аргументами. Поэтому проверкой синтксиса и связности таких «шаблонов» занимается js/ts движок, а не дополнение к vscode размером в 200 мегабайт

Что если в qml можно использовать жабоскрипт, то императивщина внезапно стала лучше декларативщины?

декларативно можно описать html-выпук из бэкенда, хотя это спорное мероприятие (см ниже), а вот сложный интерактивный клиент-сайд компонент описывать надорвешься. Рендер-функции это компромис между прямой работой с DOM и шаблонами. Впрочем, и рендер-функций зачастую не достаточно и приходится лезть в DOM. Jquery-адепт с прошлой страницы в чем-то прав

Любой первый шаблонизатор посмотри

Это ты посмотри. Twig, Blade, Jinja, Django Templates. Взгляни на их йоба-синтаксис. Это ж отдельные ЯП! Причем все как один вырвиглазые. Вот так, например, в twig выглядит «функция». Стоит отметить, что никаких инструментов в IDE, кроме убогой подсветочки для этих шаблонов нет. Фактически, ты пишешь просто уродливый текстовый файл, надеясь, что человеческий фактор не сработает

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от anonymous

клиент-сайд выйисления должны быть максимально лёгкими

Это не про до-react фреймворки, когда поставил галочку — пол страницы перерисовалось

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ну так раньше браузеры были довольно тупыми в плане спецификации на этот счёт. Вот у меня МатхЯкс где-то пару секунд свои формулы рендерит после загрузки страницы. Чё он там так долго делает не понятно. Но как сделать это сервер-сайд я не в курсе. Потому что браузеры тупые. Даже МатхМЛ выпилили, не приняли как стандарт. Типа браузер — для смузи мальчиков и девочек. Только бордер-радиус им и нужен. Матан не уважают, ск.

anonymous ()
Ответ на: комментарий от Deleted

А ДжЭс стал затычкой браузерной тупости. Как итог — вот такие вот задержки. 200мс — реакция глаза. Всё что происходит медленнее, становится заметным человеку. Т.е. работают такой, чтобы БД быстро отвечала. Потом такой, чтобы данные быстро доставлялись. И в итоге всё рушиться на клиент-сайд рендеринге. Это фиаско.

anonymous ()
Ответ на: комментарий от Deleted

Поэтому проверкой синтксиса и связности таких «шаблонов» занимается js/ts движок, а не дополнение к vscode размером в 200 мегабайт

Ты не понимаешь о чём говоришь.

1. js/ts движок проверять синтаксис таких шаблонов не может, потому что это не js/ts. Для этого говна нужен отдельный конпелятор, перегоняющий это в js.

2. при чём тут vscode с дополнениями, блджад?

декларативно можно описать html-выпук из бэкенда, хотя это спорное мероприятие (см ниже), а вот сложный интерактивный клиент-сайд компонент описывать надорвешься.

Скажи честно, ты начал программировать после 2010?

Это ты посмотри. Twig, Blade, Jinja, Django Templates. Взгляни на их йоба-синтаксис. Это ж отдельные ЯП!

Это называется предметно-ориентированый язык. Это такие языки, которые заточены под конкретную задачу. Твой JSX — то же самое.

В девяностых-нулевых, до выделенных шаблонизаторов, придумали php, jsp и им подобные. Это был прогресс. Ты мог писать логику для рендеринга хтмл прямо промеж хтмл. Оказалось, что есть оодин нюанс. Говнокодеры стали пихать бизнес-логику где попало промеж хтмл. Без жёсткой дисциплины получался сраный хаос. Всех это задолбало — придумали отдельные шаблонизаторы — примитивные язычки со специально ограниченными возможностями. Чтобы в шаблон можно было писать только логику для рендеринга, а всё бизнес-логику приходилось выносить в нормальный язык.

jsx — это возвращение в пхп из девяностых на клиенте, где бизнес-логику пихают где попало.

Вот так, например, в twig выглядит «функция».

«функции» у тебя в джаваскрипте. Это макрос.

Стоит отметить, что никаких инструментов в IDE, кроме убогой подсветочки для этих шаблонов нет.

Под IDE ты vscode что-ли понимаешь? Не хватает инструментов в IDE — выкини свою IDE и возьми подходящую.

Фактически, ты пишешь просто уродливый текстовый файл, надеясь, что человеческий фактор не сработает

И как это люди в тупых текстовых редакторах код писали? А очень просто, конпелятор ошибки кидал.

anonymous ()
Ответ на: комментарий от Deleted

Просто при наличии формул помножить кого-нибудь на ноль проще. Это не для учёных, а для обычных троллопедов. А учёные пусть катятся к чёрту. Хотя отсталость веба, да и вообще компа от листка бумаги в плане возможностей ввода — феноминальна.

anonymous ()
Ответ на: комментарий от anonymous

js/ts движок проверять синтаксис таких шаблонов не может

при чём тут vscode с дополнениями, блджад?

Я знал, что ты докопаешься до слова «синтаксис» :) Ну пусть будет «семантика». Синтаксис JSX простейший, реализовать в любом редакторе несложно. Но кроме «синтаксиса», html-елемент содержит еще кучу штук. Например

<Answer id=«1» foo={false}>{42}</Answer>

Существует ли компонент Answer? Все ли required-аттрибуты компонента присутствуют? Не ли лишних аттрибутов? Все ли аттрибуты и тело компонента имеют правильные типы? В JSX/TSX ответы на эти вопросы очевидны, т.к. компонент это просто хитро записанный вызов функции и правильность ее вызова проверит встроенный в редактор анализатор js/ts. А вот для проверки всего этого добра в шаблонах и нужен «vscode с дополнениями, блджад». И справляется он значительно хуже TSX. В этих комбайнах с типами и рефакторингом до сих пор проблемы

Скажи честно, ты начал программировать после 2010?

Начинал с Perl CGI модуля. И оно было лучше современных MVC-фремворков в плане поддержки синтаксиса (т.к. это был синтаксис языка, а не левый DSL :)

Писал на голом PHP и на Джанге. Последняя бесила больше всего. Столько пафоса фокруг текстовых шаблонов с удолбанским синтаксисом

Говнокодеры стали пихать бизнес-логику где попало промеж хтмл

А ты не будь говнокодером и описывай модель отдельно. PHP (современный) подходит и для описания предметной области и для шаблонов

Чтобы в шаблон можно было писать только логику для рендеринга, а всё бизнес-логику приходилось выносить в нормальный язык

Возвращаемся к началу разговора. Маня-фантазиям не суждено было сбыться. В шаблоны VUE и QML встроенны прямые вызовы JS. Инструменты вокруг шаблонов помойка, кривоватая поддержка для полутора IDE. Вот к чему мы катимся

В заключение хочу сказать, что написать свой DSL труда не составит, благо парсер генераторов и комбинаторов навалом. Но DSL это не только парсер. Это и поддержка в IDE. А вот с этим намного сложнее. Поэтому без крайней необходимости не надо городить DSL-и. Лучше сначала попытаться выразить проблему в рамках существующего языка

Кстати о парсерах, тренд тоже в сторону комбинаторов вместо генереторов. По той же причине. На ЯП+либа писать проще и удобнее, чем на отдельном куцем DSL без поддержки в редакторе

Deleted ()
Ответ на: комментарий от Deleted

Я знал, что ты докопаешься до слова «синтаксис» :)

Я знал, что не прав, но всё равно сделал это. Эталонный ССЗБ.

Ну пусть будет «семантика».

Копелятор семантике пока не научили.

А вот для проверки всего этого добра в шаблонах и нужен «vscode с дополнениями, блджад».

С каких пор чтобы проверять код «нужен» текстовый редактор с дополнениями? Какая проблема сделать множество всех компонентов и проверить входит ли твой в него? Короче дятлы разрабатывающие дополнения в vscode — проблема пользователей vscode.

Начинал с Perl

А чего тупишь мне с синтаксисом и vscode?

на Джанге. Последняя бесила больше всего

А меня не бесила. Отличная штука с простым синтаксисом и годной поддержкой в пишарме.

А ты не будь говнокодером и описывай модель отдельно.

Гы, нафига все эти дурачки свои шаблонизаторы придумывали и на старый пых ругались. Достаточно было просто не быть говнокодерами.

Возвращаемся к началу разговора. Маня-фантазиям

Фантазии давно сбылись. Все рендерят тупо декларативный html. Твой реакт редерит тупо декларативный DOM, вместо того, чтобы рендерить картинку. Весь энтерпрайз ушёл в ангуляр, говнокода боятся. JSX — это тупо спровоцированый жабоскриптовой псевдофункциональщиной шаг в прошлое.

anonymous ()
Ответ на: комментарий от anonymous

С каких пор чтобы проверять код «нужен» текстовый редактор с дополнениями?

Ну а как еще проверять, что шаблон правильно привязан к коду? Можно, конечно, в рантайме, но да ну его нафик :)

Какая проблема сделать множество всех компонентов и проверить входит ли твой в него?

На каком этапе процесса разработки будет проверяться это множество? И кто его сделает? И для какого из шаблонизаторов?

Все рендерят тупо декларативный html

Весь энтерпрайз ушёл в ангуляр

JSX — это тупо шаг в прошлое

Тогда я, пожалуй, задержусь в прошлом. На ангуляр1 писал, остался недоволен. Второй, говорят, компилит минутами. Подожду когда юродивые из vue, angular, svelte, etc придут к единому сиинтаксису шаблонов. Ну или когда wasm победит :)

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ну а как еще проверять, что шаблон правильно привязан к коду? Можно, конечно, в рантайме, но да ну его нафик :)

В рантайме нужно обазательно. Я твоим странным иде не доверяю.

На каком этапе процесса разработки будет проверяться это множество? И кто его сделает? И для какого из шаблонизаторов?

Ты рассказывал про Ну откуда я знаю. Это ты рассказывал про дополнение в 200мб, которое не умеет проверять наличие компонентов, нет?

Тогда я, пожалуй, задержусь в прошлом. На ангуляр1 писал, остался недоволен. Второй, говорят, компилит минутами. Подожду когда юродивые из vue, angular, svelte, etc придут к единому сиинтаксису шаблонов. Ну или когда wasm победит :)

Ждёмс.

anonymous ()
Ответ на: комментарий от anonymous

В рантайме нужно обазательно. Я твоим странным иде не доверяю

В случае с TSX до рантайма не дойдет. Аттрибуты описываются интерфейсом:

interface AnswerProps {
  children: number;
  id: string;
  foo?: number;
}

function Answer({children, id, foo}: AnswerProps) {
 return <Answer id={id} foo={foo}>{children}</Answer>
}

и Typescript даже без IDE выдаст ошибку компиляции в случае чего

Deleted ()
Ответ на: комментарий от anonymous

тупо обкорнать разрешённые жабоскриптовые конструкции внутри

..и придется запиливать очередной вырвиглазый синтаксис для условий, циклов, арифметики и прочей срани. Выйдет такая-же неподдерживаемая помойка, как и остальные шаблоны

Deleted ()
Ответ на: комментарий от anonymous

jsx — это возвращение в пхп из девяностых на клиенте, где бизнес-логику пихают где попало.

Что там, уже и бизнес-логика на клиенте? До чего дошел прогресс.

bread ()

Мне вот интересно, почему они топят за права угнетённых афроамериканцев, афроиндейцев, а за права обычного русского программиста из глубинки никто не топит. У меня, блджад, до 17 лет даже комьпютера не было, писал программы на листочке в тетради. А потом у меня был спектрум, когда у всех уже были 486-е. Только на четвёртом курсе накопил на первый ПК, работая всё лето на автомойке. Кто мне вякнет о Привилегиях Белого Мужчины - ебало разобью.

anonymous ()
Ответ на: комментарий от anonymous

придумали отдельные шаблонизаторы — примитивные язычки со специально ограниченными возможностями

Это все хорошо для генерации html на сервере. А когда у вас на клиенте интерактивное садо-мазо, какие уж тут шаблоны, тут нужны все доступные императивные средства. Прикидываться декларативной страничкой уже неуместно.

bread ()
Ответ на: комментарий от pineapple

Как мне противно стало от этой фразы

Хорошо что ты уехал жить среди стройных американских женщин, вежливых афроамериканцев с маленькими позолоченными цепочками, воспитанных мексиканцев на фоне милейшего пустынного пейзажа с кактусами, живешь в стране с чистым метрополитеном и бритыми мужчинами в коробках на пляже

anonymous ()
Ответ на: комментарий от vertexua

Эти инновации уже протухли. Vue умеет всё то же, но для людей. Одни тока pug шаблоны чего стоят, и single-file компоненты. А react - это для любителей смешивать css/html в JavaScript и оперировать этим всем в функциональном стиле. При этом ещё и богомерзкий Redux во все поля.

menangen ★★★★★ ()
Ответ на: комментарий от Deleted

Ты не в курсе что-ли, что эти же шаблоны точно также компилируются в вызовы функций вроде jsx? Фига ты тут простыни написал даже не разбираясь как всё работает под капотом.

menangen ★★★★★ ()
Ответ на: комментарий от menangen

Взгляд со стороны: реакт при всей страхолюдности кажется более практичным. На vue смотрешь и чуешь, что шаг в сторону, и потребуются сказочные костыли для перемогания этих медовых абстракций.

bread ()
Ответ на: комментарий от ggrn

Мужчины дошли уже до того, что запрещают использовать определенные слова. Конечно, ведь сегодня «авторша начинает», а завтра она себе страпон купит, и еще и длиннее!

Скорее нужно все запретить, и всех затравить, как Рэйчел Брик.

anonymous ()
Ответ на: комментарий от anonymous

А если вякать про Привилегии Белого Мужчины из Стран Первого Мира, то мое личико останется целым? Или патриотизм будет оскорблен? Ведь Россия лучшая страна, она же тоже Первый Мир.

anonymous ()
Ответ на: комментарий от anonymous

Суть феминитивов в том, что они делают речь более грамматически согласованной. Например, «красивая авторша» в 10 раз лучше в любой день недели, чем «красивая автор».

Да, согласен, гармоничнее.

kostyarin_ ★★ ()
Ответ на: комментарий от anonymous

да я согласен, до сих пор с любовью вспоминаю тёплый ламповый флэш, жаль что макромедию убили в адобе, эффективные менеджеры, что не удивительно сейчас эти же мужчины притесняют реактом, сообщество и индустрию в целом, просто навязывая свой стандарт как самый лучший. на этом и построена конфрнонтация между нами и ими.

anonymous ()
Ответ на: комментарий от Deleted

интересно, как ты будешь гуглить формулы? может сначала перед тем как продвинуть формулы в браузер, продвинь знаки интеграла, и греческий алфавит на клавиатуру, потому что иначе это фейл.

anonymous ()