рдореИрдВрдиреЗ рд╕реНрд╡реЗрд▓реНрдЯреЗ рдореЗрдВ рдПрдХ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрдХрд░ рдХреНрдпрд╛ рд╕реАрдЦрд╛


рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ Svelte рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдврд╛рдВрдЪрд╛ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА svelte-atoms рд▓рд┐рдЦреАред рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рд░рд┐рдПрдХреНрдЯ рдкрд░ рдпреВрдЖрдИ рдХрд┐рдЯ рд▓рд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдХрд╛рдо рдкрд░ рдХрд░рддреЗ рд╣реИрдВред


Svelte рдореИрдВрдиреЗ рдХреМрди рд╕реА рддрдХрдиреАрдХреЗрдВ рд╕реАрдЦреАрдВ, рдХрдЯ рдХреЗ рдиреАрдЪреЗ рдкрдврд╝реЗрдВред


рдпрд╣ рд▓реЗрдЦ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Svelte рдХреА рдореВрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдкрдврд╝реЗрдВ:
рд╕реНрд╡реЗрд▓реНрдЯреЗ рдкрд░ рдкреВрд░рд╛ рдЬреАрд╡рди
Svelte 3 рдкрд░ рдПрдХ рдЧреЗрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛


рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдХреНрд░рд┐рдп рд╕рдВрд╢реЛрдзрди рдХреЗ рдЪрд░рдг рдореЗрдВ рд╣реИред рдХреБрдЫ рдШрдЯрдХ рдЕрднреА рднреА рдЧрд╛рдпрдм рд╣реИрдВ, рдкрд╣реБрдВрдЪ рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдмрдЧ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рдореИрдВ рдЗрд╕ рд╡реНрд╣реЗрд▓ рдкрд░ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореБрдХрд╛рдмрд▓рд╛ рдореЛрдб рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рд╕реБрдзрд╛рд░ рдХреА рдЬрд░реВрд░рдд рд╣реИред


рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрд╡реЗрд▓реНрдЯреЗ рдореЗрдВ рдПрдХ рдШрдЯрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрдХрд░ рдХреНрдпрд╛ рд╕реАрдЦрд╛ред


1. рд╡рд░реНрдЧ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╡рд░реНрдЧ рдХреА рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╢рдмреНрдж рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╣реА рдЖрд░рдХреНрд╖рд┐рдд рд╣реИред


<script> export let class = ''; // !!!  !!! </script> 

рдЖрдк рдЖрдВрддрд░рд┐рдХ Svelte Api рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред $$ рдкреНрд░реЙрдкреНрд╕ рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╡реЗ рд╕рднреА рдЧреБрдг рд╣реИрдВ рдЬреЛ рдШрдЯрдХ рдХреЛ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореВрд▓ рдШрдЯрдХ рдореЗрдВ, рдЖрдк рд╡рд░реНрдЧ рдЧреБрдг рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


 <Component class="someClass" /> 

рдФрд░ рдШрдЯрдХ рдореЗрдВ рд╣реА, $ $ рдкреНрд░реЙрдкреНрд╕ рдЪрд░ рд╕реЗ рд╡рд░реНрдЧ рд╕реЗрдЯ рдХрд░реЗрдВред


 <div class={$$props.class} /> 

REPL рдореЗрдВ рдЙрджрд╛рд╣рд░рдг


2. рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдмрд╛рд▓ рдШрдЯрдХ


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


 <script> import Component from "./Component.svelte"; </script> <div class="parent"> <Component class="childClass" /> </div> <style> .parent :global(.childClass) { color: red; } </style> 

REPL рдореЗрдВ рдЙрджрд╛рд╣рд░рдг


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдЕрднреА рднреА рдПрдХ рдЕрд▓рдЧ рд╢реИрд▓реА рдорд┐рд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╛рд▓ рдШрдЯрдХреЛрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ


3. рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╣реИрдВрдбрд▓рд░


Svelte рдШрдЯрдХ рдХреЛ рдШрдЯрдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдПрдХ рдмрд╛рд╣рд░реА рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЗрд╕реЗ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХреЗред рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдердХрд╛ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдЧрд╛ рдЬреЛ рдХрд┐ рдШрдЯрдХ рдХреЛ рдкрд╛рд╕ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдореИрдВрдиреЗ рдЕрдкрдиреЗ svelte-chota рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ AlexxNB рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░ рджреЗрдЦрд╛ ред


рдЙрджрд╛рд╣рд░рдг
 <script> import { current_component, bubble, listen } from "svelte/internal"; function getEventsAction(component) { return node => { const events = Object.keys(component.$$.callbacks); const listeners = []; events.forEach(event => listeners.push(listen(node, event, e => bubble(component, e))) ); return { destroy: () => { listeners.forEach(listener => listener()); } }; }; } const events = getEventsAction(current_component); export let value; </script> <input use:events {value} /> 

REPL рдореЗрдВ рдЙрджрд╛рд╣рд░рдг


рдпрд╣ рд╡рд┐рдзрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдиреВрдиреА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдВрддрд░рд┐рдХ Svelte API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП : * рдЗрд╢реНрдпреВ рдирд┐рд░реНрджреЗрд╢ рдЬреАрдердм рдкрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛


4. рд╕реНрд▓реЙрдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛


рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реНрд▓реЙрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рджреЛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред


рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛, рдХрд╛рдиреВрдиреА


рд╕реНрд▓реЙрдЯреНрд╕ рдореЗрдВ рдПрдХ рдлреЙрд▓рдмреИрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрдВрдЯреЗрдВрдЯ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рдлреЛрд▓реНрдбрд┐рдВрдЧ рдмреИрдХрд┐рдВрдЧ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рд╕реНрд▓реЙрдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред


 <script> let footerRef = null; $: isFooterExists = Boolean(footerRef); </script> <slot name="footer"> <div bind:this={footerRef} /> </slot> {isFooterExists ? ' ' : ' '} 

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛, рдЕрд░реНрдз-рдХрд╛рдиреВрдиреА


рдЖрдк рдЖрдВрддрд░рд┐рдХ Svelte Api рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


 const isFooterExists = Boolean($$props.$$slots && $$props.$$slots.footer); 

REPL рдореЗрдВ рдЙрджрд╛рд╣рд░рдг


5. рдкреЛрд░реНрдЯрд▓


Svelte рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреЛрд░реНрдЯрд▓реНрд╕ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдк DOM рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


 <script> import { onMount } from "svelte"; let ref; onMount(() => { document.body.appendChild(ref); return () => { document.body.removeChild(ref); }; }); </script> <div> <div bind:this={ref}>content</div> </div> 

рдШрдЯрдХ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рд╢рд░реАрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдЯрд╛рддреЗ рд╕рдордп рд╣рдо рдЕрдкрдиреЗ рдкреЛрд░реНрдЯрд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреЛрдЯ: рдЕрдкрдиреЗ рдкреЛрд░реНрдЯрд▓ рдХреЛ рдПрдХ рдбрд┐рд╡ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ, рдЕрдиреНрдпрдерд╛ рд╕реНрд╡реЗрд▓реНрдЯ рдЕрдирдорд╛рдЙрдВрдЯрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдШрдЯрдХреЛрдВ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИред


6. рдПрдирд┐рдореЗрд╢рди


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


7. рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯ рдФрд░ рдШрдЯрдХ


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЖрдк рдХрд┐рд╕реА рдШрдЯрдХ рдХреЛ рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯ рдореЗрдВ рддреБрд░рдВрдд рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЧрд┐рддреБрдм рдкрд░ рдЬрд╛рд░реА


 <Component> <Child slot='footer'/> </Component> <!--    --> 

рдХрд┐рд╕реА рдШрдЯрдХ рдХреЛ рдирд╛рдорд┐рдд рд╕реНрд▓реЙрдЯ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдПрдХ div рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп HTML рдЯреИрдЧ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВред


 <Component> <div slot='footer'> <Child /> </div> </Component> <!-- ! --> 

8. рдШрдЯрдХ рдЧреБрдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛


рдпрджрд┐ рдЖрдкрдХреЛ рдЙрди рдЧреБрдгреЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдШрдЯрдХ рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рдореНрди рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 <script> import Component from './Component.svelte'; const [_, ...props] = Object.getOwnPropertyNames(Component.prototype); </script> {JSON.stringify(props)} 

рдореБрдЭреЗ рдкреЙрд▓рдореИрд▓реА рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ ред


9. рджреЛ рддрд░рдлрд╛ рдмрдВрдзрди


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


 <script> import Input from "./Input.svelte"; import { writable } from "svelte/store"; let letValue = "test let"; const storeValue = writable("test store"); </script> <Input bind:value={letValue} /> <Input bind:value={$storeValue} /> 

REPL рдореЗрдВ рдЙрджрд╛рд╣рд░рдг


10. рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕рд╛рдордЧреНрд░реА


рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рддрддреНрд╡ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдиреБрдХреВрд▓ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдиреЛрдВ рдХреЛ рдПрдХ рдЪрд░ рдореЗрдВ рдмрд╛рдБрдз рд╕рдХрддреЗ рд╣реИрдВред


 <script> let value = "Edit me"; </script> <div contenteditable="true" bind:textContent={value}>{value}</div> <div>Value: {value}</div> 

REPL рдореЗрдВ рдЙрджрд╛рд╣рд░рдг


рдШрдЯрдХ рдХрд╛ рдЖрдХрд╛рд░


рдЦреИрд░, рдФрд░ рдЬрд╣рд╛рдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд┐рдирд╛ред Svelte рдФрд░ React рдкрд░ рдШрдЯрдХреЛрдВ рдХреЗ рдХреЛрдб рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рддреБрд▓рдирд╛ рд░рдЦреЗрдВ, рдЬреЛ рд▓рдЧрднрдЧ рдЙрд╕реА рдкрд░ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдХреЛрдб рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдбреЗрдореЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА
рд╕реНрд░реЛрдд рдХреЛрдб
рдпрджрд┐ рдЖрдк рдмрдЧ рдвреВрдВрдврддреЗ рд╣реИрдВ, рдпрд╛ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрдирд╛рдПрдВ


рдкреБрдирд╢реНрдЪ
22 рдлрд░рд╡рд░реА, 2020 рдХреЛ рдореЙрд╕реНрдХреЛ рдореЗрдВ рд╕реНрд╡реЗрд▓реНрдЯ рд░реВрд╕реА рдореАрдЯрдЕрдк # 1 рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рд╡рд░рдг рдФрд░ рд░реВрд╕реА рд╕рдореБрджрд╛рдп рд╕рдореВрд╣ Svelte рдХреЛ рддрд╛рд░ рдореЗрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдШреЛрд╖рдгрд╛: @sveltejs


рдореИрдВ рд╕рднреА рдХреЛ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ!

Source: https://habr.com/ru/post/hi473598/


All Articles