рд▓реЗрдЦ рдХрд╛ рд╢реАрд░реНрд╖рдХ рдереЛрдбрд╝рд╛ рдЖрдХрд░реНрд╖рдХ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрд╡реЗрд▓реЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рддрд░рд╣ рдФрд░ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ред рдпрджрд┐ рдЖрдк рдЕрднреА рднреА Svelte рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдмрдХрд╕реБрдЖ рдХрд░реЗрдВ, рдЕрдм рд╣рдо рдХреНрд░рд╛рдВрддрд┐ рдХреА рдУрд░ рднрд╛рдЧреЗрдВрдЧреЗред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ Svelte рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд░рдиреЗ рдкрд░ рдПрдХ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдирд╣реАрдВ рд╣реИред Svelte рдЯреАрдо рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЧрд╛рдЗрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдбреБрдмреЛ рджреЗрдЧрд╛ред

рдЕрд╕реНрд╡реАрдХрд░рдг: рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рд░реЙрдХ рд╕реНрдЯрд╛рд░ рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВред рдореИрдВ рдмрд╕ рд╣рд░ рджрд┐рди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдирдП рд░реБрдЭрд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИ рдЬрдм рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ - рдпрд╣ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд▓реЛрдЪрдирд╛рддреНрдордХ рд░рд╣реЗрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВрдиреЗ рдХреБрдЫ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд▓рд┐рдЦрд╛ рд╣реИред
рдареАрдХ рд╣реИ, рдЕрдм рд╡рд┐рд╖рдп рдореЗрдВ рдЪрд▓реЛ!
рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
рдпрд╣ рдмрддрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореБрдЭреЗ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрд╡реЗрд▓реНрдЯ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдлрд╛рдбрд╝ рджреЗрдЧрд╛, рдЖрдЗрдП рдбреИрди рдирд╛рдо рдХреЗ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЗрд╕ рд╣рд╛рд▓рд┐рдпрд╛ рдЯреНрд╡реАрдЯ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдФрд░ рд╕рдордЭрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ:

рд╣рдореНрдо, рдЗрд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХреНрдпреЛрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдПрдХ рдФрд░ рдЪреЗрддрд╛рд╡рдиреА: рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдЕрдкрдиреЗ рдЬреАрд╡рди рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдереЗред рдЕрднреА рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрд╡реЗрд▓реНрдЯ рдХреЗ рд╡рд┐рдкрд░реАрдд рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рджрд╛рди рдХрд╛ рдорддрд▓рдм рдХреНрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕рд╕реЗ рдЕрдм рд╣рдо рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдЗрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╕рд░рд▓реАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреИрд╕реЗ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рд░рд┐рдПрдХреНрдЯ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЬрдм рдХреЛрдИ рд░рд┐рдПрдХреНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ DOM рдХреА рдПрдХ рдХреЙрдкреА рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ DOM рдирд╛рдордХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓ DOM рдЖрдкрдХреЗ рд░рд┐рдПрдХреНрдЯ рдХреЛрдб рдФрд░ DOM рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХреЗ рдмреАрдЪ рдордзреНрдпрд╕реНрдерддрд╛ рдХрд░рддрд╛ рд╣реИред
, (, this.setState
useState
), React , , .
DOM , , . DOM, DOM, , DOM .
, DOM , , React DOM. .
, . React, ( this.setState
), DOM , React (-! ).
Dan, , React . React , . .
, Svelte
Svelte тАФ - , - . DOM , .
, , , JavaScript ? тАФ . .
1.
Svelte тАФ . Svelte тАФ . , Svelte тАФ , JavaScript, DOM - .
-, ? ? тАКтАФ . , , . , .
Rich Harris YGLF 2019:
Svelte 3.0 API .
? , , React ( ) API, , ( this.setState
useState
) DOM.
this.setState
React ( UI ) , API, .
Svelte .
, Observable. , . , тАФ .
1. (() => {
2. let square = number => number * number;
3.
4. let secondNumber = square(firstNumber);
5. let firstNumber = 42;
6.
7. console.log(secondNumber);
8. })();
, тДЦ4, secondNumber
firstNumber
, .
, . ? , ( , ).
, , :
1. 'square' ?
- ,
2. 'secondNumber' ?
- 'square' 'firstNumber'. 'square', 'firstNumber', .
3. , 'firstNumber'. 'secondNumber' 'square' 'firstNumber'
- , 'console.log'?
- , .
, , , , .
тДЦ4, , firstNumber
, , . , тДЦ5, тДЦ5, тДЦ4 .
: , A
B
, B
.
, , Svelte ? JavaScript . : $: foo = bar
. , , , $
foo = bar
( strict mode , foo
).
, Svelte $:
, , . .
! API JavaScript API this.setState
.
:
1. // js
2. let foo = 10;
3. let bar = foo + 10; // bar 20
4. foo = bar // bar 20 ( )
5. bar = foo + 10 // bar 30
6. // svelte js
7. let foo = 10;
8. $: bar = foo + 10; // bar 20
9. foo = 15 // bar 25, foo
, bar
foo
, , bar = foo + 10
, API, this.setState ({bar = foo + 10})
. .
, foo
15
, bar
25
, API, . Svelte .
Javascript , , :
1. //...
2. function instance($$self, $$props, $$invalidate) {
3. let foo = 10; // bar 20
4. $$invalidate('foo', foo = 15) // bar 25, foo
5. let bar;
6. $$self.$$.update = ($$dirty = { foo: 1 }) => {
7. if ($$dirty.foo) { $$invalidate('bar', bar = foo + 10); }
8. };
9. return { bar };
10. }
11. //...
, . .
, foo
, bar
? , Svelte- , .
Svelte . , тАФ .
: тДЦ4, bar
, EventLoop .
, . , Svelte UI .
2.
, , Svelte , ? React Svelte, :

17 29
, , React.js тАФтАК Angular .

, Svelte , , . , тАФтАК .
, -. ? , , , ?
, , , . , , React-, .
, API Svelte , .
3.
, , Svelte - . ? , Svelte?
, React , , DOM , DOM , - ( ).
, , React , , . React API, shouldComponentUpdate
, useMemo
, React.PureComponent
..
DOM .
Svelte DOM, DOM ? , Rich Harris YGLF:
тАФ . .
, -, , . , Svelte , .
, Svelte . Svelte Javascript, DOM. , Svelte DOM ?
, (, React) Svelte , - . , React API, , . Svelte =
.
тАКтАФ , foo
тАКтАФ =
, Svelte, , , foo
. Svelte DOM, foo
.
, . , Rich Harris .
Svelte 3.0 тАФ , - . , . Svelte , Javascript- .
, , . Svelte React, Angular UI ?
тАФ . Svelte , , , , .
, React -, Svelte , .
!
Svelte: C Telegram