Size: a a a

2020 December 17

n

neadmin in Svelte [svelt]
Плагины для приложения...
Например, в приложении нет чата - добавляется плагином.
В приложении есть погода - плагин добаляет нового провайдера или заменят визуальное представление.
И т.д.
Соответственно визуальная часть - svelte
Управление состоянием - reducer
Получение данных или сайдэффекты - saga
источник

AP

Alexander Ponomarev in Svelte [svelt]
neadmin
Да, это и лежит в основе моего кода.
Redux Store превращается в Svelte Store - все отлично.
У меня проблема архитектурная - как плагину зарегать себя в приложении?
Причем так что бы плагин мог переопределить какую-то часть  (из ядра или добавленное плагином загруженным раньше), например, переопределить reducer или saga... или хотя бы отключить их.
Если делаю, как с компонентами Svelte - кладу в одну кладовку под уникальными именами. А при замене генерирую Action замены компонента, что бы в местах его использования выполнить инициализацию подменного компонента по данным замененного. Вроде и Мона Лиза, но и не больной гоблин.
То с redux и saga не разумею как лучше сделать... получается сильно за мудрено... и появляются сомнения, правильно ли делаю.
А если есть сомнения, то значит что-то действительно не очевидно, а раз не очевидно, значит не правильно.
Управление reducer в итоге сделал, через, приведенный в документации по ссылке, 'Reducer Manager'. Но это только для случаев когда добавляются новые элементы первого уровня в стор. А хочется заменить reducer для любого action... Так же делать реестр reducers один rootReducer, по принципу EventEmmiter (EventBus), то начинаются буксы, когда делаю возможность задания нескольких reducer для одного типа Action, и пытаюсь только один из низ заменить из плагина...
Аналогично с saga
Вот где мясо ((
из своего опыта сага это последнее средство которое стоит подключать вообще, потому что она невероятно сложна в правильном использовании и не терпит ошибок вообще. Если промис упал это ок, если сага упала то это гыгы
источник

11

1 1 in Svelte [svelt]
neadmin
Может, я слишком много хочу сразу и универсально... ((
мне кажется вам стоит попробовать перестроить мышление с императивного на декларативный подход с зависимыми вычислениями.  оно и для свелта полезно, и вообще в целом.  вы действительно пытаетесь против шерсти гладить, потому оно и негладко выходит.
источник

КС

Кирилл Спасибович... in Svelte [svelt]
ну плагин это типа какой-то динамический импорт, где есть данные и конструкторы компонентов, по которым эти данные будут размазаны
источник

КС

Кирилл Спасибович... in Svelte [svelt]
причем тут декларативный и императивный подход я хз
источник

n

neadmin in Svelte [svelt]
Нужно централизировать управление состоянием приложения.
Зависимые вычисления уже пробовали - очень сложно расширять приложение, сложно управлять состоянием, много жестких связей. В итоге, когда нужно переписать какой-то модуль на новую логику появляются поломки в самых неожиданных местах... И дни разработки превращаются в недели отладки.
В новой схеме saga должны были отвечать за зависимые вычисления, общение с сервером (через провайдеры данных)...
источник

n

neadmin in Svelte [svelt]
А какая альтернатива сагам?
redux-thunk или самописные middleware ?
источник

n

neadmin in Svelte [svelt]
или может быть в mobx, или другой библиотеке, есть лучшие решения?
источник

AP

Alexander Ponomarev in Svelte [svelt]
neadmin
А какая альтернатива сагам?
redux-thunk или самописные middleware ?
санки и кастомные мидлвары, и только когда упираешься в стену уже сага
источник

AP

Alexander Ponomarev in Svelte [svelt]
оно друг другу не мешает
источник

n

neadmin in Svelte [svelt]
Спасибо. Может придет просветление к утру)
источник
2020 December 18

NK

ID:0 in Svelte [svelt]
источник

NK

ID:0 in Svelte [svelt]
источник

DK

Dmitry Kurmanov in Svelte [svelt]
Alexander Ponomarev
ну тогда пишите что-то с препроцессорами для цсс а потом подключите в проект с другими препроцессорами или постцсс конфигом.

Отсутствие качественных либ не только из-за того что просто их не написали. Их неудобно писать и они потом еще и не интегрируются в чужие проекты нормально =)
А что насчет написания кроссфреймворкных бибилиотек на Svelte? Ну типа я для разработки юзаю что хочу. Потом пакую это в UMD бандл. А потом отдаю юзерам в виде "black box" с API. Я вообще в эту сторону и копаю. Я вот делал реализацию SurveyJS на Svelte и как раз завернул в такой бандл. Моя гипотеза, что если контрол достаточно сложный и хорошо сделан, то люди будут юзать несмотря на "ненативность". К тому же можно поставлять готовые обертки под фреймворки.
источник

AP

Alexander Ponomarev in Svelte [svelt]
Dmitry Kurmanov
А что насчет написания кроссфреймворкных бибилиотек на Svelte? Ну типа я для разработки юзаю что хочу. Потом пакую это в UMD бандл. А потом отдаю юзерам в виде "black box" с API. Я вообще в эту сторону и копаю. Я вот делал реализацию SurveyJS на Svelte и как раз завернул в такой бандл. Моя гипотеза, что если контрол достаточно сложный и хорошо сделан, то люди будут юзать несмотря на "ненативность". К тому же можно поставлять готовые обертки под фреймворки.
я бы такое взял в последнюю очередь, учитывая что скорее всего ваш контрол повторит что-то что уже есть нативно на таргетном фреймворке
источник

A

Arushwl in Svelte [svelt]
Dmitry Kurmanov
А что насчет написания кроссфреймворкных бибилиотек на Svelte? Ну типа я для разработки юзаю что хочу. Потом пакую это в UMD бандл. А потом отдаю юзерам в виде "black box" с API. Я вообще в эту сторону и копаю. Я вот делал реализацию SurveyJS на Svelte и как раз завернул в такой бандл. Моя гипотеза, что если контрол достаточно сложный и хорошо сделан, то люди будут юзать несмотря на "ненативность". К тому же можно поставлять готовые обертки под фреймворки.
UMD пакеты 👌🏻 про обёртки не знаю... видел адаптеры для фреймворков для svelte
источник

KN

Konstantin Nosov in Svelte [svelt]
Dmitry Kurmanov
А что насчет написания кроссфреймворкных бибилиотек на Svelte? Ну типа я для разработки юзаю что хочу. Потом пакую это в UMD бандл. А потом отдаю юзерам в виде "black box" с API. Я вообще в эту сторону и копаю. Я вот делал реализацию SurveyJS на Svelte и как раз завернул в такой бандл. Моя гипотеза, что если контрол достаточно сложный и хорошо сделан, то люди будут юзать несмотря на "ненативность". К тому же можно поставлять готовые обертки под фреймворки.
Вроде уммет же svelte в web component?
источник

DK

Dmitry Kurmanov in Svelte [svelt]
Alexander Ponomarev
я бы такое взял в последнюю очередь, учитывая что скорее всего ваш контрол повторит что-то что уже есть нативно на таргетном фреймворке
Я понимаю, но если у меня будут фичи, которых нет на нативных реализациях? Просто потому, что я все силы брошу на фичи и качество, а не на реализации под фреймворки. И у меня будет и пользователей больше. И я смогу "жить" независимо от того, какой сейчас в моде фреймворк. Ну это идея просто)
источник

AP

Alexander Ponomarev in Svelte [svelt]
Dmitry Kurmanov
А что насчет написания кроссфреймворкных бибилиотек на Svelte? Ну типа я для разработки юзаю что хочу. Потом пакую это в UMD бандл. А потом отдаю юзерам в виде "black box" с API. Я вообще в эту сторону и копаю. Я вот делал реализацию SurveyJS на Svelte и как раз завернул в такой бандл. Моя гипотеза, что если контрол достаточно сложный и хорошо сделан, то люди будут юзать несмотря на "ненативность". К тому же можно поставлять готовые обертки под фреймворки.
umd значит all dependencies inlined, условно говоря если у вас там будет пачка полифилов то это будет повтор пачки полифилов которые уже могли быть в моем бандле
источник

DK

Dmitry Kurmanov in Svelte [svelt]
Konstantin Nosov
Вроде уммет же svelte в web component?
Ну да, это тоже путь в будущее по идее
источник