Size: a a a

2021 March 03

M

Mitch in Svelte [svelt]
Mitch
Тоже костыль, который требует снаружи компонента как-то вмешиваться в его реализацию. Сейчас подумал, можно попробовать количество инстансов вынести в store, и создавать только для первого. Попробую.
> Сейчас подумал, можно попробовать количество инстансов вынести в store, и создавать только для первого.

Глупая идея :), значение-то инкрементится у всех. Видимо, буду выносить в отдельный компонент.
источник

МТ

Марк Танащук... in Svelte [svelt]
Alexander Ponomarev
Марк, 3500 строк кода это очень МАЛЕНЬКИЙ проект =)
Я фрилансер и для меня это проект как минимум среднего размера
источник

МТ

Марк Танащук... in Svelte [svelt]
=\
источник

IF

Igor Filippov in Svelte [svelt]
Марк Танащук
Я фрилансер и для меня это проект как минимум среднего размера
У меня в проекте 3500 файлов тс)
источник

IF

Igor Filippov in Svelte [svelt]
ну где-то так
источник

K

Kaifat in Svelte [svelt]
Alexander Ponomarev
почему вы не используете вебпак если на нем у вас все работает и есть опыт?
Пока не пробовал другие сборщики для svelte кроме rollup.
И с вебпаком не то чтобы прям опыт. Из тех раз что я им пользовался, в части импорта не компилированных компонентов проблем вообще не возникало. Но у него были другие проблемы, которые решить сходу у меня так не получилось. Например динамический импорт пакета с кучей зависимостей. В начале вроде все работало, чанк успешно билдился, а потом какой-то момент перестало, и заставить работать уже не получилось. Не помогло даже удаление node_modules. Parcel кстати без каких либо проблем все собрал.
источник

IF

Igor Filippov in Svelte [svelt]
Igor Filippov
У меня в проекте 3500 файлов тс)
соврал 2300
источник

МТ

Марк Танащук... in Svelte [svelt]
Igor Filippov
У меня в проекте 3500 файлов тс)
Одно дело когда это длительно поддерживающийся проект, другое, когда еще несколько проектов лежат, ждут своей очереди а этот проект за N дней сделать надо
источник

МТ

Марк Танащук... in Svelte [svelt]
И в эти N дней сложно уместить фикс дополнительных ошибок
источник

МТ

Марк Танащук... in Svelte [svelt]
Не спорю что это по меркам программирования маленький проект, но лично для меня он хоть и не самый большой, но точно не настолько маленький что все появившиеся проблемы за день пофиксить можно
источник

IF

Igor Filippov in Svelte [svelt]
Марк Танащук
Не спорю что это по меркам программирования маленький проект, но лично для меня он хоть и не самый большой, но точно не настолько маленький что все появившиеся проблемы за день пофиксить можно
Если в соло то конечно
источник

K

Kaifat in Svelte [svelt]
Alexander Ponomarev
добавьте declarations: true в tsconfig.json и вызовите tsc. У вас будут и js и d.ts файлы
ага, получилось) там еще declarationMap true нужно было включить) Спасибо
источник

AS

Alexey Schebelev in Svelte [svelt]
Mitch
Добрый день. Есть вопрос: можно ли в svelte без костылей дедуплицировать одну из нод компонена? Пример компонента:
<div>
 <input type="text" list="datalist-id">
 <datalist id="datalist-id">
   {#each some_const as item}
     <option value="{item}">
   {/each}
 </datalist>
</div>

datalist здесь генерируется из константы, в которой пара сотен значений. Если компонент будет добавлен на страницу несколько раз, то и datalist будет создан тоже несколько раз, что абсолютно не нужно, да и id у всех будет одинаковый (проверял, svelte изолирует классы, но не id). Вот хотелось бы сделать так, чтобы datalist генерировался только для первого инстанса. Пробовал завернуть в {#if !document.querySelector('#datalist-id') }, но не работает, видимо, потому что сначала выполняются условия для всех компонентов, потом уже результат вставляется в DOM, в итоге от такого if никакой пользы.
https://svelte.dev/repl/fcee7fb6256f46ebba467d509ab85a8d?version=3.35.0 - вот написал вроде нименее бескостыльный вариант.
источник

M

Mitch in Svelte [svelt]
Спасибо! Это примерно то, что я пытался сделать, только рабочее :).
источник

AS

Alexey Schebelev in Svelte [svelt]
Mitch
Спасибо! Это примерно то, что я пытался сделать, только рабочее :).
Можно даже вынести эту логику в отдельный компонент Dedupe.svelte со слотом и периспользовать если нужно.
источник

M

Mitch in Svelte [svelt]
Alexey Schebelev
Можно даже вынести эту логику в отдельный компонент Dedupe.svelte со слотом и периспользовать если нужно.
Вот, кстати, я не очень понял, почему это работает. Ведь после добавления второго элемента, i будет равен 1, и условие if i === 0 уже не будет выполняться и в первом. То есть на изменение этой переменной нет реакции. Я пробовал сделать то же самое с writable store, там реакция была, и if $i === 0 переставал выполняться везде после добавления второго элемента.
источник

AS

Alexey Schebelev in Svelte [svelt]
элементы в script module не реактивные
источник

AS

Alexey Schebelev in Svelte [svelt]
их значение читается только при инициализации инстанса
источник

AS

Alexey Schebelev in Svelte [svelt]
но можно их изменять
источник

AS

Alexey Schebelev in Svelte [svelt]
это как переменная из внешнего скоупа
источник