Size: a a a

2020 September 28

КС

Кирилл Спасибович... in Svelte [svelt]
@PaulMaly
const obj = x { ${name}: ${attr.get_value(block)} };
а не знаешь что там x делает?
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
@PaulMaly
const obj = x { ${name}: ${attr.get_value(block)} };
а не знаешь что там x делает?
визуально выглядит как сбор пропсов из аттрибутов, но я не работал с этим кодом
источник

КС

Кирилл Спасибович... in Svelte [svelt]
Pavel 🦇 Malyshev
визуально выглядит как сбор пропсов из аттрибутов, но я не работал с этим кодом
я имею ввиду что там перед темплейт литералом буква
https://github.com/sveltejs/svelte/blob/46a83a50e3ed8f90b188cb152901cc579b189cd2/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts#L245
оно как-то ещё с объектами работает
а потом в темплейт литералах строки получаются
я консоль логаю, а там объекты
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
Кирилл Спасибович
я имею ввиду что там перед темплейт литералом буква
https://github.com/sveltejs/svelte/blob/46a83a50e3ed8f90b188cb152901cc579b189cd2/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts#L245
оно как-то ещё с объектами работает
а потом в темплейт литералах строки получаются
я консоль логаю, а там объекты
так это же ES6 фишка такая - Tagget Template Literals
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
на них пол-свелта написано)
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
и целый lit-html от гугла/полимера работает
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
function tag(string, ...expressions) {}
источник

PM

Pavel 🦇 Malyshev in Svelte [svelt]
tag`<div>${foo}</div>`
источник

КС

Кирилл Спасибович... in Svelte [svelt]
так вот как оно так :) понял, спасибо
источник

PM

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

КС

Кирилл Спасибович... in Svelte [svelt]
  function x(strings, ...values) {
   const str = join$1(strings);
   const comments = [];

   try {
     const expression = parseExpressionAt(str, 0, acorn_opts(comments, str)) ;
     const match = /\S+/.exec(str.slice((expression ).end));
     if (match) {
       throw new Error(`Unexpected token '${match[0]}'`);
     }

     inject(str, expression, values, comments);

     return expression;
   } catch (err) {
     handle_error(str, err);
   }
 }


вот она где магия зарыта :)
источник

AI

Aleksey Immũzov in Svelte [svelt]
Кирилл Спасибович
  function x(strings, ...values) {
   const str = join$1(strings);
   const comments = [];

   try {
     const expression = parseExpressionAt(str, 0, acorn_opts(comments, str)) ;
     const match = /\S+/.exec(str.slice((expression ).end));
     if (match) {
       throw new Error(`Unexpected token '${match[0]}'`);
     }

     inject(str, expression, values, comments);

     return expression;
   } catch (err) {
     handle_error(str, err);
   }
 }


вот она где магия зарыта :)
Исходник вот здесьздесь, если что.
источник

КС

Кирилл Спасибович... in Svelte [svelt]
спасибо :) а то пытаюсь понять что там происходит просто глядя на код))
источник

КС

Кирилл Спасибович... in Svelte [svelt]
теперь понятно че они так переживают за скоупинг свой
т.к. там два класса и при тогглах svelte-{hash} всегда в наличии
то какие-нибудь весёлые селекторы типа

.selector + *

который превращается в

.selector + svelte-{hash}

могут затронуть непонятно что

на мой взгляд лучше бы оставили прокидывание классов и ужесточили правила написания селекторов

при

<div></div>
<Component />

<style>
div + * {
 margin-top: .5rem;
}
<style>

при скоупинге первая нода Component'а маржин не получит
что явно не в интересах любителей таких селекторов :)
поэтому такое обычно превращается в

div + :global(*)
источник

КС

Кирилл Спасибович... in Svelte [svelt]
https://github.com/non25/svelte-template-rollup/tree/nested-component-scoped-class/patches
а вот и патчик без директивы class:
но зато со спредами теперь работает нормально, добавляет хэш, когда используется вот так

<Component
 class="{toggle ? 'dog' : ''} {shmoggle ? 'bird' : ''}"
 {...spread}
/>


и не добавляет хэш, если в аттрибут class никто ничего не положил
также не добавляет хэш, если class лежит в spread
источник

NK

ID:0 in Svelte [svelt]
#article #tutorial #gmaps

Gmaps в Svelte / Sapper

https://shipbit.de/blog/google-maps-svelte-sapper/
источник

AP

Alexander Ponomarev in Svelte [svelt]
а в малине тоже скоупинг через доп класс?
источник

RS

Ruslan Shakirov in Svelte [svelt]
Ruslan Shakirov
остается загадкой почему optional chaining не пашет
хм, с роллапом работает, с вебпаком нет
источник

ON

Oleg N in Svelte [svelt]
Alexander Ponomarev
а в малине тоже скоупинг через доп класс?
да, оптимальный вариант
источник

L

Lupusregina[beta] in Svelte [svelt]
Oleg N
да, оптимальный вариант
а чем малина лучше свелта7
источник