Pull to refresh
13
0
Игорь Савин @ingvar_snow

Frontend Engineer

Send message

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

Мы пока стандарты для сервис-воркеров не внедрили, поэтому про проблемы и как их решать не скажу.
Могу сказать только, что в основном для создания сервис-воркеров используем Workbox (https://developers.google.com/web/tools/workbox)

В таком случае просто обычно на бекенде обычным способом запрашиваются данные из базы данных, или какого-то api и передаются пропсами в react-компоненты. А на клиенте эти данные вставлены в виде json, которые парсится и кладется например в redux-state.

В случае с redux лучше прямо в доке посмотреть: https://redux.js.org/usage/server-rendering

А как помогут решить проблему git-сабмодули? Ведь чтобы обновить виджет - хост-проекту придется катить релиз.

Врапперы из CustomElements - такой тоже был вариант, но у нас пишут на react, поэтому используем react-комопонеты, а не custom-элементы, концептуально разницы между ними не вижу.

А module federation как раз сейчас пробуем и возможно в будущем перейдем на него, данная архитектура сложилась еще до его появления.

Как я понимаю, PWA в минимальном варианте - это просто веб-старица на которой есть manifest.json и какой-либо сервис-воркер. И никаких проблем в работе с такими виджетами там нет.

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

Этим пакетом не пользуемся.

Но вообще никто не застрахован что в транзитивных зависимостях окажется что-то вредоносное. Вот недавний пример: https://github.com/vuejs/vue-cli/issues/7054

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

Information

Rating
Does not participate
Registered
Activity

Specialization

Frontend Developer, Web Developer
Lead
JavaScript
HTML
CSS
Adaptive layout
Web development
React
Redux
TypeScript
Webpack
Node.js