Size: a a a

2020 September 10

PM

Pavel 🦇 Malyshev in Svelte [svelt]
просто если значение нужно вычислить единожды, то имеет смысл просто использовать $:
источник

КС

Кирилл Спасибович... in Svelte [svelt]
Pavel 🦇 Malyshev
подумал что проблема существует в основном для циклов ведь или я не прав?
у меня только для циклов
или хелпер функцию юзал, или компонент создавал если что-то менее тривиальное
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
у меня только для циклов
или хелпер функцию юзал, или компонент создавал если что-то менее тривиальное
я просто подумал, раз проблема только для циклов, а в #each уже по-сути создает контекст-зависимые переменные в шаблоне, то почему бы просто не расширить синтаксис #each
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
🤔
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
тот же for позволяет создавать переменные внутри и даже несколько.
источник

КС

Кирилл Спасибович... in Svelte [svelt]
Pavel 🦇 Malyshev
я просто подумал, раз проблема только для циклов, а в #each уже по-сути создает контекст-зависимые переменные в шаблоне, то почему бы просто не расширить синтаксис #each
звучит логично
деструктуризация есть и по сути она делает именно это, но ограничена только вытаскиванием полей
другое дело как это должно выглядеть чтобы было аккуратно...

не нравятся как выглядят интерполяции разбитые на строки
источник

PM

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

не нравятся как выглядят интерполяции разбитые на строки
да это вопрос интересный и над этим можно подумать. просто ограничение только на #each сразу уберет замечания вроде "злоупотребление логикой в шаблонах"
источник

КС

Кирилл Спасибович... in Svelte [svelt]
Pavel 🦇 Malyshev
да это вопрос интересный и над этим можно подумать. просто ограничение только на #each сразу уберет замечания вроде "злоупотребление логикой в шаблонах"
мне всё-таки кажется что const'ы в предложенном виде могут выглядеть аккуратнее визуально, чем multiline #each
особенно если нужно объявить пару-тройку const'ов

если разрешить располагать их только непосредственно под each, то это наверное не сильно усугубит ситуацию с код ревью

{#each boxes as box (box.id), index, area = box.width * box.height}
 <div
   class="box"
   class:large={area >= 10000}
   style="width: {box.width}px; height: {box.height}px"
 >
   {box.width} * {box.height} = {area}
 </div>
{/each}


это выглядит не очень, и конкретно в этой ситуации не так больно наинтерполировать в шаблоне
но обычно когда от этого больно - одной строки не хватит
источник

КС

Кирилл Спасибович... in Svelte [svelt]
но в таком случае проще компонент сделать для этого each
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
мне всё-таки кажется что const'ы в предложенном виде могут выглядеть аккуратнее визуально, чем multiline #each
особенно если нужно объявить пару-тройку const'ов

если разрешить располагать их только непосредственно под each, то это наверное не сильно усугубит ситуацию с код ревью

{#each boxes as box (box.id), index, area = box.width * box.height}
 <div
   class="box"
   class:large={area >= 10000}
   style="width: {box.width}px; height: {box.height}px"
 >
   {box.width} * {box.height} = {area}
 </div>
{/each}


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

КС

Кирилл Спасибович... in Svelte [svelt]
Pavel 🦇 Malyshev
в целом да, но мне кажется нам в принципе не следует предполагать что в шаблоне будет использоваться много подобных переменных. Иначе совершенно точно эта фича будет только развращать
тогда аргумент адекватный только про wasted computation
что благодаря const'у мы получаем area и 2 раза переиспользуем его

если разрешать больше, то это как раз и будет развращать
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
тогда аргумент адекватный только про wasted computation
что благодаря const'у мы получаем area и 2 раза переиспользуем его

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

КС

Кирилл Спасибович... in Svelte [svelt]
Pavel 🦇 Malyshev
мемоизация же. у меня во всех проектах есть подключенный хелпер для мемоизации, потому что часто пригождается
любопытно, что дороже, function call, или умножить два числа два раза?)
а есть примерчик?

у меня в голове это выглядит как конкатенируем параметры через , и это будет key, а value это их умножение, если есть такое key, отдаём value, если нет - считаем и создаём

хотя это вроде что-то более универсальное и ему можно кормить функцию для расчетов
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
любопытно, что дороже, function call, или умножить два числа два раза?)
а есть примерчик?

у меня в голове это выглядит как конкатенируем параметры через , и это будет key, а value это их умножение, если есть такое key, отдаём value, если нет - считаем и создаём

хотя это вроде что-то более универсальное и ему можно кормить функцию для расчетов
очевидно же что сложение 2-х чисел это просто пример) операция может быть намного сложнее, а вызов функции примерно одинаков по затратам кажется
источник

КС

Кирилл Спасибович... in Svelte [svelt]
Pavel 🦇 Malyshev
очевидно же что сложение 2-х чисел это просто пример) операция может быть намного сложнее, а вызов функции примерно одинаков по затратам кажется
ну прикольно, тогда мемоизация лучше чем этот const, т.к. она ещё будет сохранять результаты, которых сейчас в each нет, но потом могут снова появиться

тогда не знаю даже какие еще есть аргументы за эту штуку если думать минималистично и дисциплинично 😁
источник

S

SlavaZ in Svelte [svelt]
Кирилл Спасибович
мне всё-таки кажется что const'ы в предложенном виде могут выглядеть аккуратнее визуально, чем multiline #each
особенно если нужно объявить пару-тройку const'ов

если разрешить располагать их только непосредственно под each, то это наверное не сильно усугубит ситуацию с код ревью

{#each boxes as box (box.id), index, area = box.width * box.height}
 <div
   class="box"
   class:large={area >= 10000}
   style="width: {box.width}px; height: {box.height}px"
 >
   {box.width} * {box.height} = {area}
 </div>
{/each}


это выглядит не очень, и конкретно в этой ситуации не так больно наинтерполировать в шаблоне
но обычно когда от этого больно - одной строки не хватит
+1
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
ну прикольно, тогда мемоизация лучше чем этот const, т.к. она ещё будет сохранять результаты, которых сейчас в each нет, но потом могут снова появиться

тогда не знаю даже какие еще есть аргументы за эту штуку если думать минималистично и дисциплинично 😁
да именно так
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
может быть кейс когда сочетание параметров будет идентичным
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Вы посмотрите на них, всем чем угодно заняты, только не передачей классов в дочерние компоненты! 😉
источник