169 похожих чатов

В Svelte нет наследования, и по большей части я с

этим согласен.
Говорят (https://youtu.be/4mdNDavIGpc?t=2347),
наследование заменяется композицией компонентов...


Я делаю обертку для библиотеки на Svelte
С пропсами, и событиями все отлично:
почти красиво вышло, по аналогии:
https://ru.svelte.dev/examples#event-forwarding

А как быть экспортными функциями?

3 ответов

18 просмотров

А точнее?

Pavel 🦇 Malyshev
А точнее?

Все классы либы наследуются от некого Observable. Таким образов у всех потомков есть события change и error. С событиями почти все решается тремя строчками кода: дополнение списка событий недостающими, подписка на список событий при создании компоненты и отписка при уничтожении. Утилиты рулят, хотя эти три строчки приходится дублировать во всех комопнентах (пока только тех, где это нужно уже сейчас, а просто в теории). Но есть методы, типа changed и dispatchEvent, scale, simplify, transform, translate и т.д. с переменным числом параметров. Не все преобразования данных можно повторить, а затем предать измененные данные в компонент. И потом, много времени уходит внутри либы на перевод из входного формата во внутренний и перерисовку (в некоторых случаях объект либы пересоздается, т.к. изменение не всех параметром предусмотрено после создания экземпляра) - использование этих функций дает значительное ускорение. Описание каждой из функций, это примерно три строчки: `export function simplify( arg0, arg1, arg2, arg3 ) { return _unit.simplify( arg0, arg1, arg2, arg3 ); }` И так 5-10 раз в 20-30 компонентах... иногда с добавлением каких-то проверок или ожидания. Этим методы нужны для решения задач. Они занимают вроде бы не много места, зато дублируются в паре десятков компонентов... Можно вставлять в слот доп.комопнент, отвечающий за вызов той или иной функции родителя. Но не все функции обратимы, и, казалось бы логичная отмена функции удалением из слота не всегда возможна, либо требует дополнительного расхода памяти для хранения исходного состояния данных. Да и просто странным выглядит вызов функции компонента генерацией вложенного компонента, ведь бывает нужно вызвать одну функцию, а бывает нужна последовательнось, при том что некоторые завершаются не синхронно... за несколько часов работы получится длинная портянка вложенных компонентов. Можно обойтись и одним копонентом, если забить на обратимость функции, как при вызове экспортной функции и даже ловить return через событие... Такая схема сильно усложняет код. Есть мнение, что нужно написать одну функцию, аля getUnit - возвращающею экземпляр созданного в компоненте объекта либы и дальше в коде творить все что вздумается, но опять же эту функцию требуется повторить в каждом помпоненте-обертке... а хотелось бы написать один раз и унаследовать... Т.е. в идеале нужно что бы у всех копонент экспортировалась минимум одна, одна и та же (возвращающая экземпляр объекта созданного в компоненте) , функция, а при onMount / onDestroy дергались функции подписки и отписки от событий... Это легко решается наследованием, но его нет... А как это решить композицией компонентов?

Евгений Гуреев ☭ Гуреев ☭
Все классы либы наследуются от некого Observable. ...

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

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта