Как стать автором
Обновить

Построение библиотек компонентов и их организация. Или как извлечь максимальную пользу для бизнеса c React и Angular

Время на прочтение3 мин
Количество просмотров4.4K
Всего голосов 5: ↑4 и ↓1+3
Комментарии19

Комментарии 19

… а пользователи загрузят и реакт, и ангуляр при открытии страницы. Не маленькие, не обломятся.


Нет, это нисколько не ущемляет концепции — потому что действительно, есть ситуации, когда вполне себе не обломятся, а вот удешевление разработки и уменьшение кодовой базы — куда важнее. Но если говорить про аккуратное решение, я бы сразу думал о framework-agnostic компонентах (это не так страшно, как кажется, JSX можно транспилировать очень по-разному), которые бы потом через минимальные обертки подключались бы и в реакт, и в ангуляр.

Спасибо за рекомендацию посмотреть в сторону framework-agnostic.
Да тут есть минусы размера. Мы используем данный подход только для проектов Middle и Бек офис. В публичных приложений используется SSR и там следят за размером бандла.

Интересный подход, а не пробовали https://developer.mozilla.org/ru/docs/Web/Web_Components их вроде как можно написать, и потом просто подключить в ангуляр и в реакт и вообще куда угодно написав небольшой адаптер под нужный фреймворк? Вы рассматривали такой подход?

Я сам не пробовал, но гипотеза кажется рабочей.

Придётся скрещивать не просто ужа и ежа, но еще и с лягушкой посредине.
Веб-компоненты — это отдельная история со своим ворохом проблем, веселых случаев с кроссбраузерностью, и тому подобного. Не говоря уж о том, что писать их просто по спеке — слишком бойлерплейтно (а значит, нужна еще одна либа для удобных веб-компонент).


Ну и подключать веб-компоненты в реакт — не самая простая история, потому что реакт как обычно отличился, и не желает быть гладко совместимым (см. https://custom-elements-everywhere.com/)

те из популярных инструментов только реакт пока не полностью совместим?

Оно совместимо (там по ссылке можно увидеть, что "basic tests" все проходят, и принципиальную подключаемость это уже даст), просто придётся руками разруливать все открытые вопросы. А не то, что привязал входы-выходы, и всё сразу взлетело.


С вебкомпонентами проблема в них самих — это будет третья технология, которую надо будет правильно запустить (в связках реакт-wc и ангуляр-wc), и скользкие моменты там естественно есть, особенно если отойти в сторону от обычных взаимодействий. Я, например, как-то раз обнаружил, что инициализация веб-компонентов при переносе DOM с ними между страницами — настолько дико отличается в ФФ и Хроме (Хром, как обычно, имеет собственное мнение на счёт того, как всё должно быть), что код, нормальный для одного случая, просто непоправимо падает в другом, и наоборот.
Хотя, конечно, кому "в распространенных ситуациях" надо переносить DOM между страницами?

Да, каждый браузер по своему реализует веб стандарты.
А в какой ситуации нужно переносить DOM между страницами? Стало интересно.

А в какой ситуации нужно переносить DOM между страницами? Стало интересно.

Так делает wkhtmltopdf — создаёт клон страницы, а потом перегоняет его в pdf.

Помню слышал на одном докладе про ангуляр, слышал что есть возможность экспортировать компонент как web component

Мы начинали работать в этом подходе несколько лет назад, тогда Angular еще не предоставил АПИ для создания веб компонентов. Поэтому пошли наиболее удобным способом для нас. Недавно делал доработки в react библиотеке и был доволен как просто я обновил еще десяток приложений, поэтому решил поделиться.
Знаю что кто-то исследовал возможность веб компонентов, но до практики не дошли.

Веб-компоненты как стандарт зародился более 10 лет назад, и с тех пор современные подходы улетели далеко вперед, а веб-компоненты все никак не угонятся и по-прежнему предоставляют удобство на уровне AngularJS.

Поэтому когда мне предлагают написать что-то на веб-компонентах, я смотрю на это как на шаг назад.

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

Еще есть 4й вариант – собраться с силами и принять корпоративный стандарт по технологиям, и закончить с этим зоопарком.

У нас диверсификация и живем дружно.

Изначально вопрос стоял "как извлечь максимальную пользу для бизнеса". С этой точки зрения разнообразие фреймворков только идёт в минус

Согласен, разнообразие не лучшее, что может быть. Хорошо стартовать в 2021 году новые проекты с твердой позицией. Но вернуться в 2016 и перепиливать бизнес приложения с 1 технологии на другую тоже процесс не легкий, сделано много. А так react свежий, angular тоже. Всем комфортно.

Кстати, совершенно необязательно.
То есть да, в 2021 году брать и реакт и ангуляр — ну, уже такое. А вот в 2015 году этот вопрос совсем иначе выглядит. Точно так же, как в 2021 году выглядит другой bleeding edge (на фронте ситуация с бесконечными новыми нескучными фреймворками сейчас чуть поутихла, но вот в девопс вроде самое оно творится).
А если брать что-то одно и твёрдо в него вписываться — можно потом оказаться компанией Wrike с её dart. И что-то это уже на максимальную пользу для бизнеса не тянет.

Знаю ребят, которые пытаются полностью уйти на Flutter (ios, android) и Flutter web. Это Dart, интересно их будущее.

Я правильно понимаю, что у вас при каждом изменении Input вложенный реакт компонент монтируется заново. Т.е. такую обёртку можно использовать только с чем-то примитивным?
Что произойдёт если вовнутрь засунуть что-нибудь сложное, требующее загрузки начального состояния.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий