ΠΡΡΡ Π΄Π²Π° Π΄ΠΎΠΌΠΈΠ½ΠΈΡΡΡΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°, ΡΠ΅ΠΌΠΏΠ»Π΅ΠΉΡΡ ΠΈ JSX. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ:
Π’Π΅ΠΌΠΏΠ»Π΅ΠΉΡΡ
Π’Π΅ΠΌΠΏΠ»Π΅ΠΉΡΡ β ΡΡΠΎ DSL ΡΠ·ΡΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΡΡΡΠΎΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈ ΠΈ ΡΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, Ρ ΠΏΡΠΈΡΠ΅Π»ΠΎΠΌ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ DOM. JS Π² ΡΠ°ΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΊΡΠ°ΠΏΠ»Π΅Π½ΠΈΡΠΌΠΈ, ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΎΡΡΡΠΎΠ²ΠΊΠ°ΠΌΠΈ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ΅ΠΌΠΏΠ»Π΅ΠΉΡΠΎΠ² ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΡΠΈΡΡΡΠΉ HTML (Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ), Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΊ Π½Π΅ΠΌΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ "Π³Π»Π°Π³ΠΎΠ»Ρ" Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
{{ count }} Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ
Π΄Π°Π½Π½ΡΡ
), Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ² (`v-for / ng-for / # each`), Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ (`ng-if / v-if / # if`) ΠΈ ΠΏΡΠΎΡΠΈΠ΅. Π’Π΅ΠΌΠΏΠ»Π΅ΠΉΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ, ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠ΅ΠΉ (ΠΊΠ°ΠΊ Π²ΠΎ .vue ΡΠ°ΠΉΠ»Π°Ρ
) ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ (`.component.html` ΠΊΠ°ΠΊ Π² Angular).
<template>
<p>Hello, {{ name }}</p>
</template>
<script>
let name = 'world';
</script>
Π’Π΅ΠΌΠΏΠ»Π΅ΠΉΡΠ°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΏΠ°ΡΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΠΈΡ Π² JS ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ DOM.
ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠΎΡΠ΅ΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ DOM ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Ρ.ΠΊ. ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅Ρ Π³Π΄Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
Π’Π΅ΠΌΠΏΠ»Π΅ΠΉΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Angular, Svelte, Vue
JSX
JSX ΠΆΠ΅ β ΡΡΠΎ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ JavaScript Ρ Π²ΠΊΡΠ°ΠΏΠ»Π΅Π½ΠΈΡΠΌΠΈ HTML-like ΡΠ·ΡΠΊΠ°. ΠΡΠΎ Π΄Π°ΡΡ Π½Π°ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ΅ΠΌΠΏΠ»Π΅ΠΉΡΠΎΠ² Π·Π° ΡΡΡΡ JS ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ, Π½ΠΎ ΡΠ°ΠΊΠ°Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΠΌΠΈΠ½ΡΡΡ: Π΅Ρ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. JSX Ρ ΠΎΡΠΎΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½.
function () {
let name = 'world';
return <p>Hello, { name }</p>
}
ΠΠ»Ρ JSX Π½ΡΠΆΠ΅Π½ ΡΡΠ°Π½ΡΠΏΠ°ΠΉΠ»Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡ return
<p>42</p> Π²ΠΎ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ return createElement('p', { children: 42 }). Π€ΡΠ½ΠΊΡΠΈΡ createElement(β¦) ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ virtualDOM ΡΠ»Π΅ΠΌΠ΅Π½Ρ β JS ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ DOM ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ { type: 'p', children: 42 }. ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΎΠ½Π° ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ vDOM, ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΡΠ°Π²Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΈΠΉ vDOM Ρ Π½ΠΎΠ²ΡΠΌ ΠΈ ΡΠ΄Π΅Π»Π°Π΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ DOM'Π° ΡΠ°ΠΌ, Π³Π΄Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ.JSX ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² React, Solid, Vue
.
ΠΠΎΡ Ρ ΠΎΠΏΠΈΡΠ°Π» ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ½ΠΈ ΡΠ°Π·Π½ΡΠ΅, Π½ΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΡΠΈ Π΄Π²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ°ΠΊΠΈ ΡΡ ΠΎΠΆΠΈ ΠΈ Π³ΡΠ°Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΡΡΡΡ ΡΠ°Π·ΠΌΡΡΠ°. ΠΡ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ ΡΡΠΎ Ρ ΡΠΏΠΎΠΌΡΠ½ΡΠ» Vue Π΄Π²Π°ΠΆΠ΄Ρ, ΠΈ Π² ΡΠ΅ΠΌΠΏΠ»Π΅ΠΉΡΠ°Ρ ΠΈ Π² JSX? Vue ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π΄Π΅Π²Π΅Π»ΠΎΠΏΠ΅ΡΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°: ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ Vue ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ vDOM, Π½ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΠΌΠΏΠ»Π΅ΠΉΡΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡ Ρ ΠΎΡΠΎΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. Π ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Solid ΡΠ°ΡΠΏΠ°ΡΡΠΈΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ JSX ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΊ ΡΠ΅ΠΌΠΏΠ»Π΅ΠΉΡΡ. Π Astro ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ JSX-like ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, Π½ΠΎ ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ΅ΠΌΠΏΠ»Π΅ΠΉΡΡ.
ΠΠ° ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ, Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ
[].map Π΅ΡΡΡ ΡΠ²ΠΎΠΉ *-for, Π° <p>{{ name }}</p> Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ return <p>{ name }</p>. ΠΡΡΠ°Π²Π»ΡΠΉΡΠ΅ ΡΠ²ΠΎΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ΡΡ ΠΊ math.random ΠΊΠΎΠΌΠΌΡΡΠ½ΠΈΡΠΈ β ΠΌΡ Π»ΡΠ±ΠΈΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ .
ΠΠ°Π΄Π΅ΡΡΡ, ΡΠ΅Π³ΠΎΠ΄Π½Ρ Ρ Π²Π°Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠΏΠΎΠΊΠΎΠΈΠ» ΡΠ΅ΠΌ Π·Π°ΠΏΡΡΠ°Π» π
ΠΠΎ Π·Π°Π²ΡΡΠ°, Π·Π°Π²ΡΡΠ° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ !
#thematicweek #frameworksweek