Комментарии 28
module DirectCrm {
export class CustomFieldKindComponentBase extends React.Component {
render() {
return
/* so much shitty html… */
стало нормальным?
Примерно в тот момент, когда ребята из facebook поняли, что всё это время мы отделяли представление от логики неправильно, и гораздо естественнее создавать компоненты, а не разделять «вёрстку» и «логику» просто потому что так принято.
У Александра Соловьёва на эту тему просто шикарнейший доклад, обожаю его, можете посмотреть.
Вообще у этого чувака много очень смешных выступлений, например вот это про FRP и ClojureScript.
Вы не представляете, как это местами смешно выглядит. Не, правда.
Я не про ваш выбор вовсе — я про аргументы типа, что «это в продакшн у FB». Я с трудом могу вспомнить более глючное, плохо продуманное, менее предсказуемое приложение, чем FB. И да, я не про компоненты вовсе, а просто о том, что FB в качестве примера для других — это мягко говоря не довод.
Кроме всего прочего, у вас действительно достаточно сложный UI, какого у FB не встретишь. И другие технологии в основе.
Ну вот вам реальный пример — был у меня проект, лет пять назад. UI — где-то на уровне вашего по сложности. Огромные формы, сложные зависимости, нетривиальные компоненты. В качестве одного из инструментов предлагался Flex. Аргументы против были именно в этом духе — технология мол не будет поддерживаться. Пять лет прошло. Тот проект давно в могиле — в том числе потому, что на выбранной другой технологии его просто не получилось сделать. Flex никуда не делся. А сколько javascript фреймворков за эти пять лет померли и были забыты?
Впрочем, для небольших компонентов, где мало разметки и мало кода (привет счетчику людей онлайн в fb), все же проще смешать все воедино. Основной вопрос как всегда в том, где граница между небольшим и большим :)
Мне кажется это ускорило бы разработку в разы.
Люди моляться на Реакт просто потому, что не умеют работать с DOM, с данными в SPA не знают о веб-компонентах и не в курсе современных стандартов. Что вообще вам дает Реакт, кроме декомпозиции?
А "неправильная" — это какая? Я, как человек работавший с Реактом, хорошо представляю как там этот впорос решен. Я не против Реакта, но совершенно не вижу в нем панацеи и знаю о его недостатках и альтернативных решениях. Так в чем правильность?
- Сильно уменьшает сложность за счёт именно правильной декомпозиции.
- Имеет очень низкий порог вхождения: практически любой разработчик может за разумное время поправить баг в UI и не разломает при этом всё.
- Даёт возможности для статической типизации всего UI. Не думаю, что какой-то другой фреймворк даст возможность проверить, что в "<a hrea" нет опечатки. Какой-нибудь статический анализатор html может это сделать, но это тривиальный случай, статическая типизация даёт на много больше, чем это, но я тут не хочу углубляться. Для нас это очень важно, как можно было понять из статьи.
По двум первым пунктам — это только в сравнении с адом легаси-кода. Третий пункт частично принимается. Однако это не преимущество именно Реакта. Я прекрасно могу писать на TypeScript и использовать веб-компоненты для декомпозиции.
И в конце концов, никто не молится на реакт. Это просто кейс, а вы холивар разводите
Да, у меня есть проект с весьма сложным интерфейсом на веб-компонентах. И если кто-то описывает свой "кейс" публично, то видимо это подразумевает какое-то последующее обсуждение, тем более что затронут вопрос выбора стека. Но, пожалуй, не буду больше "холивар разводить", раз это так всех нервирует.
- А это точно правильная декомпозиция? Выглядит немного адово по-сравнению с ангуляром=)
- Согласен на все 100%
- Второй ангуляр на тайпскрипте
tsx тоже не решил. Вы можете передавать компоненту любые атрибуты и компилятор не ругнётся. Или там нужны какие-то особые флаги компиляции?
Компонент — generic от его props. Всё, что не указано в generic типе, передавать, разумеется, нельзя.
Как мы перестали бояться тикетов на UI