ΠΡΠΈΠΌΠ΅ΡΡ angular: ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² AngularJS. ΠΡΠΈΠΌΠ΅ΡΡ
ΠΠΎΠ»ΡΡΠΈΠ΅ ΡΠ°ΠΉΡΡ Π½Π° AngularJS
ΠΡ ΡΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ AngularJS, Π° ΡΠ΅Π³ΠΎΠ΄Π½Ρ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡΠΌΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΡΠ°ΠΉΡΡ Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ AngularJS ΠΈ Π³Π΄Π΅ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ?
AngularJS (Angular, ΠΠ½Π³ΡΠ»Π°Ρ) β ΡΡΠΎ JS ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ frontend-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ΄Π½ΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Single Page Application). ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΎΠ±ΡΡΠ½ΡΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ. Π’ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅? ΠΡΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΏΠΈΡΡΠΌΠΎ, ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² Π»Π΅Π½ΡΠ΅ Π΄ΡΡΠ·Π΅ΠΉ ΠΈΠ»ΠΈ ΠΌΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠΎΡΠΌΡ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, ΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° AngularJS ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΌ JS ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΠΎΡΡΠΎΠ²ΠΎΠΉ ΡΠ»ΡΠΆΠ±Ρ ΠΎΡ Google β ΡΡΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:
ΠΠ΄Π½Π°ΠΊΠΎ AngularJS ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ² ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² Google Docs. Π‘ΡΠ΅ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ AngularJS Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠΈΡΠ΅, ΠΎ ΡΠ΅ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ Π½ΠΈΠΆΠ΅. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ AngularJS ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ, ΠΎ ΡΠ΅ΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΠ΅Ρ ΡΡΡΠ΅ΠΌΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΎΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ°ΠΉΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ
ΡΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ BuiltWith:
ΠΠΈΠΆΠ΅ ΠΌΡ ΡΠΎΠ±ΡΠ°Π»ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ AngularJS ΠΈΠ· ΡΠ°ΠΌΡΡ
ΡΠ°Π·Π½ΡΡ
ΡΡΠ΅Ρ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠΎΠ»ΡΡΠΈΠ΅ ΡΠ°ΠΉΡΡ Π½Π° AngularJS
The Guardian
Π‘Π°ΠΉΡ Π±ΡΠΈΡΠ°Π½ΡΠΊΠΎΠΉ Π³Π°Π·Π΅ΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΆΠ΅ ΡΠ΅ΡΡΡ Π»Π΅Ρ ΠΈ ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π½Π° ΡΠ΅Π½ΡΡΠ±ΡΡ 2015 Π³ΠΎΠ΄Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΡΡΠ΅ΡΡΠ΅ ΠΌΠ΅ΡΡΠΎ ΠΏΠΎ ΠΏΠΎΡΠ΅ΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΡΡΠ΅Π΄ΠΈ Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π½ΠΎΠ²ΠΎΡΡΠ½ΡΡ ΠΈΠ·Π΄Π°Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΎΠ½Π»Π°ΠΉΠ½. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²Π΅Π±-ΡΠ°ΠΉΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ AngularJS ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ES 2015, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ JavaScript:
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΡΠΎΠΊΡΡΡΠΊΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ The Guardian ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Angular Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ RxJS Π΄Π»Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ.
Π’Π°ΠΊΠΆΠ΅ AngularJS ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Grid, ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡ. Π Π½Π΅ΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ 3 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 20 ΡΡΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ. ΠΠ°ΠΊ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ The Guardian ΡΠ΄Π΅Π»Π°Π»ΠΎ ΡΠΈΡΡΠ΅ΠΌΡ Grid Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π½Π° Github:
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° Π½Π° AngularJS 2.0 (Π΄Π°ΡΠ° ΡΠ΅Π»ΠΈΠ·Π° Π±Π΅ΡΠ°-Π²Π΅ΡΡΠΈΠΈ: 15 Π΄Π΅ΠΊΠ°Π±ΡΡ 2015 Π³ΠΎΠ΄Π°), ΡΠΎ, Π½Π΅ ΡΠΌΠΎΡΡΡ Π½Π° Π΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, senior-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠ·Π΄Π°Π½ΠΈΡ The Guardian ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ, ΡΡΠΎ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Angular ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠ΅Π½Π΄Π΅Π½ΡΠΈΡΠΌ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.
PayPal
ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ PayPal ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ»ΡΠ³ΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ Π² 203 ΡΡΡΠ°Π½Π°Ρ ΠΈ ΡΠ΅Π³ΠΈΠΎΠ½Π°Ρ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ 26 Π²Π°Π»ΡΡΠ°ΠΌΠΈ. AngularJS ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΈ ΠΎΠΏΠ»Π°ΡΡ Π·Π°ΠΊΠ°Π·Π° (PayPal Checkout), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ·:
- Π ΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ
- Π‘ΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠ»Π°ΡΠ΅ΠΆΠ°
- Π‘Π°ΠΉΠ΄Π±Π°ΡΠ°
- Π‘ΡΡΠ°Π½ΠΈΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΠΊΡΠ΅Π΄ΠΈΡΠ½ΠΎΠΉ ΠΊΠ°ΡΡΡ
Weather.com
ΠΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠΈΠΉ ΠΊΠ°Π±Π΅Π»ΡΠ½ΡΠΉ ΠΈ ΡΠΏΡΡΠ½ΠΈΠΊΠΎΠ²ΡΠΉ ΠΊΠ°Π½Π°Π» The Weather Channel ΠΎΠ±Π·Π°Π²Π΅Π»ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠΌ Π΅ΡΠ΅ Π² Π΄Π°Π»Π΅ΠΊΠΎΠΌ 1996 Π³ΠΎΠ΄Ρ. Π‘Π΅Π³ΠΎΠ΄Π½Ρ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ Π΄Π°Π½Π½ΡΠΌ SimilarWeb, weather.com β ΡΠ°ΠΌΡΠΉ ΠΏΠΎΡΠ΅ΡΠ°Π΅ΠΌΡΠΉ ΠΏΠΎΠ³ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΡ Π² ΠΌΠΈΡΠ΅.
Π 2014 Π³ΠΎΠ΄Ρ ΡΠ°ΠΉΡ ΠΊΠ°Π½Π°Π»Π° ΠΌΠΈΠ³ΡΠΈΡΠΎΠ²Π°Π» Π½Π° Drupal, ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Symfony2. ΠΠ° weather.com ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ Π½Π°ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ°ΠΉΡΠ°. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ AngularJS, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ.
YouTube Π΄Π»Ρ PS3
Youtube β Π²ΠΈΠ΄Π΅ΠΎΡ ΠΎΡΡΠΈΠ½Π³, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google, ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ Π² 70 ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄ΠΎΠ² Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π. Π£ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΎΠ΄ΠΈΠ½ ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΡΠΎ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° Π² ΠΌΠΈΡΠ΅. YouTube Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΡΡΡΠΎΠΉΡΡΠ², Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»ΡΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Sony. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ PS3 Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ JS-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° AngularJS:
VEVO
ΠΠ° ΡΠ°ΠΉΡΠ΅ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° ΡΠΎΠ±ΡΠ°Π½ΠΎ 150 ΡΡΡΡΡ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏΠΎΠ², ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΠΈΡ ΡΡ Ρ ΡΠΎΠ³Π»Π°ΡΠΈΡ ΠΏΡΠ°Π²ΠΎΠΎΠ±Π»Π°Π΄Π°ΡΠ΅Π»Π΅ΠΉ. VEVO ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ 12 ΠΌΠΈΠ»Π»ΠΈΠ°ΡΠ΄ΠΎΠ² ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠ² Π΅ΠΆΠ΅ΠΌΠ΅ΡΡΡΠ½ΠΎ. ΠΡΠΈ ΡΡΠΎΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠΎΠ½Ρ-ΡΠ½Π΄Π° ΡΠ°ΠΉΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ JavaScript-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ AngularJS:
Lego.com
Π Π·Π°ΠΏΡΡΠΊΡ ΠΌΠΈΠ½ΠΈ-ΡΠ΅ΡΠΈΠΈ Rebels, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΌΠΈΡΡ Β«ΠΠ²Π΅Π·Π΄Π½ΡΡ Π²ΠΎΠΉΠ½Β», Π΄Π°ΡΡΠΊΠ°Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Lego, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½Π°Ρ Π΅ΡΠ΅ Π² 1932 Π³ΠΎΠ΄Ρ, Π·Π°ΠΊΠ°Π·Π°Π»Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΏΠΎΡΡΠ΅ΡΠΎΠ²:
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΡ ΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄Π²ΠΎΠ΅ Π»ΡΠ΄Π΅ΠΉ (Β«Π²Π΅Π΄ΡΡΠΈΠΉΒ» ΠΈ Β«ΡΡΡΡΠΌΠ°Π½Β») ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄Π½ΠΎ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎ. Β«ΠΠ΅Π΄ΡΡΠΈΠΉΒ» ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Π΄Π΅ΡΠ°Π»ΡΡ , Π° Β«ΡΡΡΡΠΌΠ°Π½Β» ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½ Π½Π°Π΄ ΠΎΠ±ΡΠ΅ΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΉ. Π§Π΅ΡΠ΅Π· ΡΠ°Π²Π½ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠ½ΠΈ ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΌΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ AngularJS, ΡΠ±ΠΎΡΡΠΈΠΊ JS-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Browserify ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ LESS ΠΈΠΌ ΡΠ΄Π°Π»ΠΎcΡ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΡΡΡΡΠΎΠ΅ ΠΈ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ.
Upwork ΠΈ Freelancer
ΠΠ±Π΅ ΡΡΠΈΠ»Π°Π½Ρ-Π±ΠΈΡΠΆΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Ρ:
- ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠΈΠ»Π°Π½ΡΠ΅ΡΠΎΠ²: 10 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π΄Π»Ρ Upwork ΠΈ 18 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π΄Π»Ρ Freelancer.
- Π‘ΡΠ΅Π΄Π½Π΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²: 3,6 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° Π΄Π»Ρ Upwork ΠΈ 4,4 Π΄Π»Ρ Freelancer.
ΠΡΠΈ ΡΡΠΎΠΌ ΠΈ Upwork, ΠΈ Freelancer ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ AngularJS:
jetBlue
ΠΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ Π°ΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠ°Ρ Π»ΠΎΡΠΊΠΎΡΡ Π°Π²ΠΈΠ°ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, ΡΠ°ΠΌΠΎΠ»Π΅ΡΠ°ΠΌΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅ΠΆΠ΅Π³ΠΎΠ΄Π½ΠΎ Π»Π΅ΡΠ°Π΅Ρ 35 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π»ΡΠ΄Π΅ΠΉ. jetBlue ΡΠΎΠ²Π΅ΡΡΠ°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 900 ΠΏΠ΅ΡΠ΅Π»Π΅ΡΠΎΠ² Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ ΠΈ Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠ°ΡΡΠ°ΠΆΠΈΡΠΎΠ² Π² 95 Π³ΠΎΡΠΎΠ΄ΠΎΠ² Π‘Π¨Π, ΡΡΡΠ°Π½ ΠΠ°ΡΠΈΠ±ΡΠΊΠΎΠ³ΠΎ Π±Π°ΡΡΠ΅ΠΉΠ½Π° ΠΈ ΠΠ°ΡΠΈΠ½ΡΠΊΠΎΠΉ ΠΠΌΠ΅ΡΠΈΠΊΠΈ. ΠΠ° ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ°ΠΉΡΠ° jetBlue ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ AngularJS:
iStock Photo
ΠΠΈΠΊΡΠΎΡΡΠΎΠΊ Ρ royalty-free ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡΠΌΠΈ, ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡΠΌΠΈ, Π°ΡΠ΄ΠΈΠΎ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Getty Images. AngularJS ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ°:
Localytics
Π‘Π΅ΡΠ²ΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ΠΎΠ²ΡΠ΅ ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΈ. ΠΠ³ΠΎ ΡΡΠ»ΡΠ³Π°ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ 6000 ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΉ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Microsoft, The New York Times, Zipcar, HBO ΠΈ The Weather Channel, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΠΏΠΈΡΠ°Π»ΠΈ Π²ΡΡΠ΅.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΡΠ΅ΡΠ²ΠΈΡ Π½Π° JS ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Β«ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈΒ». ΠΠΌ ΠΏΡΠΈΡΠ΅Π»ΡΡ ΠΏΠΎ Π΄ΡΡΠ΅ Π½Π°Π±ΠΎΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (suite) AngularJS UI ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΅ΡΠ°ΡΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ AngularJS ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΡΠ΅ΠΊ ΠΊΠΎΠ΄Π° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ:
Π’ΠΎΠΏ-ΡΠ°ΠΉΡΡ Π½Π° AngularJS, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅, ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎΡ JS ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π² ΡΠ°Π·Π½ΡΡ ΡΡΠ΅ΡΠ°Ρ , ΠΎΡ Π²ΠΈΠ΄Π΅ΠΎΡ ΠΎΡΡΠΈΠ½Π³ΠΎΠ² ΠΈ ΡΠ°Π·Π²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΡΠ°Π»ΠΎΠ² Π΄ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π±ΠΈΠ·Π½Π΅Ρ-Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ ΠΈ ΡΠ°ΠΉΡΠΎΠ² ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ.
Π₯ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ΄Π½ΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ AngularJS ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ? ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π² ΡΠ°Π±ΠΎΡΠ΅ Symfony2, AngularJS ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π΅Π±-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈ Ρ ΡΠ°Π΄ΠΎΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ ΠΏΡΠΎΠ΄Π°ΡΡΠΈΠΉ ΡΠ°ΠΉΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Π±ΠΈΠ·Π½Π΅ΡΠ°.
ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ NGRX / Π₯Π°Π±Ρ
ΠΡΠ° ΡΡΠ°ΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΡΠ° Β«Angular: ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² NGRXΒ»
ΠΡΠΈΠΌΠ΅Ρ NGRX
Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΡΡΠ°Π½ΠΈΡΠ° ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΆΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ NGRX.
ΠΠ»Π°Π½ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ°ΠΏΠΎΠΊ Π΄Π»Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (Actions)
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅Π΄ΡΠΊΡΠΎΡΠΎΠ² (Reducers)
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΠΎΠ² (Effects)
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠΎΠ² (Selectors)
- ΠΠΎΠ½Π΅ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ
ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎβ¦
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Angle Cli Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ngrx.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡ:
ng new angular-ngrx --style=scss
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ NGRX:
npm install @ngrx/core @ngrx/store @ngrx/effects @ngrx/store-devtools @ngrx/router-store --save
ΠΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ ngrx. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· Π½ΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΠ½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: ΡΠ΄ΡΠΎ, Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, ΡΡΡΠ΅ΠΊΡΡ, Π½ΠΎ Π΅ΡΡΡ ΠΏΠ°ΡΠ°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ?
- store-devtools β ΠΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ.
- router-store β Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΎΡΡΠ΅ΡΠ° angular Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΠ°ΠΏΠΎΠΊ Π΄Π»Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΈ Π²ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΎΠ½Π° ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΡΠ°Π³ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΡΡΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅).
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΠ°ΠΏΠΎΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. Π£ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΠ°ΠΏΠΊΠ° Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«storeΒ» ΠΈ ΠΏΡΡΡ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΈΠ³ΡΠΎΠΊΠΎΠ² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°: Β«ActionsΒ», Β«EffectsΒ», Β«RedursΒ», Β«SelectorsΒ» ΠΈ Β«StateΒ».
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
ΠΠ°ΠΊ ΠΌΡ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°Π·Π΄Π΅Π»Π°: Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΠ»Ρ Π½ΠΈΡ ΠΎΠ±ΠΎΠΈΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π΄Π²Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. Π£ Π½Π°Ρ ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ ΠΎΡΠ²Π΅ΡΠ° HTTP ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² IUser.
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (store/state/user.state.ts):
Π§ΡΠΎ ΠΌΡ Π·Π΄Π΅ΡΡ Π΄Π΅Π»Π°Π΅ΠΌ:
- ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΡΡΠ΅Π΄Ρ.
- ΠΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π½Π΅Π΄Π°Π²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
ΠΠ»Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ (store/states/config.state.ts):
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (store/states/app.state.ts):
- Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ°.
- ΠΠΎΡΠΎΠΌ Π·Π°Π΄Π°Π΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ (ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅).
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΠ΅ΠΉΡΡΠ²ΠΈΠΉ
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΠ°ΡΠ½Π΅ΠΌ Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (store / actions / user.actions.ts):
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΉΠ΄Π΅ΠΌΡΡ ΠΏΠΎ ΠΊΠΎΠ΄Ρ:
- ΠΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ Enum, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΈΠ·Π±Π΅Π³Π°Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ.
- ΠΠΎΡΠΎΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π²Π°ΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΡΠ΅ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Action ΠΈΠ· ngrx. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠΈΠΏ Π² ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΈ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π΄Π»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ Π΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΊΠ»Π°ΡΡΠ°.
- ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΡΠΈΠΏ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π°ΡΠΈ ΠΊΠ»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡ Π½Π°ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π½Π°ΡΠΈΡ ΡΠ΅Π΄ΡΠΊΡΠΎΡΠ°Ρ .
Π ΡΡΠΎ Π²ΡΠ΅β¦ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΡΡΠΎ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ (store/actions/config.actions.ts):
ΠΠΈΡΠ΅Π³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π΄Π΅ΡΡ, Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ²ΡΡΠ²ΡΠ΅ΡΠ΅ ΡΠ΅Π±Ρ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ ΡΠΎ Π²ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅.
ΠΡΠ»ΠΈΡΠ½ΠΎ, ΠΌΡ ΡΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡβ¦ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ!
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π Π΅Π΄ΡΠΊΡΠΎΡΠΎΠ²
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΈΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π΄ΡΠΊΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅.
Π£ Π½Π°Ρ Π±ΡΠ΄ΡΡ ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ, ΡΠ΅Π°Π³ΠΈΡΡΡΡΠΈΠ΅ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄ΡΡΠ³ΠΈΠ΅ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΡΡΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠ°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠ΅Π΄ΡΠΊΡΠΎΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π΄ΡΡΠ³ΠΎΠΉ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π½ΠΎ Π½Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π΄ΡΠΊΡΠΎΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (store/redurs/user.reducers.ts):
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ:
- ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π΄ΡΠΊΡΠΎΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ, Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ IUserState.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ switch, ΠΌΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
- ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ»ΠΈΡΠ½ΠΈΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
- ΠΡΠ΅ ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
Π ΡΡΠΎ Π²ΡΠ΅. ΠΡ Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π² ΡΠ΅Π΄ΡΠΊΡΠΎΡΠ΅. ΠΠ°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ (state/redurs/config.reducers.ts):
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (store):
ΠΠ΄Π΅ΡΡ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π²ΡΠ΅ ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ Π½Π° ΠΊΠ°ΡΡΡ ΡΠ΅Π΄ΡΠΊΡΠΎΡΠΎΠ² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠ°ΡΡΡ ΡΠ΅Π΄ΡΠΊΡΠΎΡΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π΄Π»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ². ΠΠΎΠ·ΠΆΠ΅ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Ρ store.
ΠΠΎΠ±Π°Π²ΠΈΠΌ ΠΡΡΠ΅ΠΊΡΡ
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΈΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Β«ΠΡΡΠ΅ΠΊΡΡΒ», ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΡ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΡΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π² ΡΠ΅Π΄ΡΠΊΡΠΎΡΠ°Ρ ΠΌΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ Π½Π΅ Π²ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² ΡΡΡΠ΅ΠΊΡΠ°Ρ , ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ.
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΡΡΡΠ΅ΠΊΡΠΎΠ² (store/effects/user.effects.ts):
ΠΠ½ΠΎΠ³ΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π΅. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΠΈΡ :
- ΠΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ Π½Π°ΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΠΊΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°.
- ΠΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ Π½Π°ΡΠΈ ΡΡΡΠ΅ΠΊΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΡΡΡΠ΅ΠΊΡΠΎΠ², ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ngrx/Effects.
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ ngrx / Effects, ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ°.
- Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΈΠΏΠ° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΡΠ΅ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ofType.
- Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΡΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ rxjs, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ (Ρ Π½Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ rxjs Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅).
- ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ Effect ΠΎΡΠΏΡΠ°Π²ΠΈΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.
- Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΌΡ Π²Π½Π΅Π΄ΡΡΠ΅ΠΌ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄Π»Ρ ngrx / Effects, ΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°ΠΊΠΆΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ (ΡΡΡΠΈΡΠ΅, ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΌΠΎ, ΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² Π½Π°ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅).
ΠΡΠΎ ΠΏΠΎΡΡΠΈ ΡΠ° ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΠ°, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΌ ΡΡΡΠ΅ΠΊΡΠ΅. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π½ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π½Π°ΡΠΈΡ ΡΠ΅Π΄ΡΠΊΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΡΠ΅ΠΊΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ (store/effects/config.effects.ts):
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ°Ρ β¦
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π‘Π΅Π»Π΅ΠΊΡΠΎΡΠΎΠ²
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π‘Π΅Π»Π΅ΠΊΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΠ΅Ρ ΡΠΌΡΡΠ»Π° ΠΏΠΎΠ²ΡΠΎΡΡΡΡ Π²ΡΠ±ΠΎΡΠΊΠΈ ΡΡΠ΅Π·ΠΎΠ² Π½Π°ΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ.
ΠΠ°ΠΊ Π²ΡΠ΅Π³Π΄Π°, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ (store/selectors/user.selectors.ts):
ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΉ Π΄Π°Π½Π½ΡΡ Π² Π½Π°ΡΠΈΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ°Ρ , Π° ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΡΠ΅Π· Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ»Π°Π΅ΡΡΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΡ createSelector ΠΈΠ· ngrx/store.
ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β ΡΡΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ (ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°ΡΡΡΠΌΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ), Π²ΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ β Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΠ°ΡΡ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ (store/selectors/config.selectors.ts):
ΠΡΠΎΠ³ΠΎΠ²Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
ΠΡΠ»ΠΈΡΠ½ΠΎ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π²ΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΠ΅ΠΌΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΡ, Π½ΠΎ Π½Π°ΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅ΡΠΈ β ΡΠΎΠ±ΡΠ°ΡΡ Π²ΡΠ΅ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ. Π― ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
Π§ΡΠΎ ΠΌΡ Π·Π΄Π΅ΡΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ:
- ΠΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΠΈ ΡΠ΅Π΄ΡΠΊΡΠΎΡΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΈΡ Π² forRoot ΠΌΠΎΠ΄ΡΠ»Ρ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.
- ΠΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΠΈ ΡΡΡΠ΅ΠΊΡΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΈΡ Π²Π½ΡΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΌΠΎΠ΄ΡΠ»Ρ forRoot ΡΡΡΠ΅ΠΊΡΠΎΠ².
- ΠΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡ stateKey.
- Π ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°, Π΅ΡΠ»ΠΈ ΡΡΠ΅Π΄Π° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ.
ΠΠ΅ΡΠ²ΡΠ΅ Π΄Π²Π° ΡΠ°Π³Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠ°Π³ΠΈ 3 ΠΈ 4 Ρ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ, Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΡΠ΄Π΅Π»Π°Π»ΠΈβ¦ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ !
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ
ΠΡ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°Π΅ΠΌΡΡ ΠΊ ΠΊΠΎΠ½ΡΡ! ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅β¦
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
- ΠΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π² Π½Π°Ρ app.component.
- ΠΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ° Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΠΎΡΠΈΠΌ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΡΠ°ΡΡΡ ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² HTML.
- Π onInit ΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ.
ΠΠΎΡ ΠΈ Π²ΡΠ΅β¦ ΠΡ ΡΠΆΠ΅ ΠΊΠΎΠ΄ΠΈΡΡΠ΅ΠΌ ΡΡΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠΈΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ, ΠΈ ΡΠ΅Π΄ΡΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΠΎΡ ΡΡΡΠ΅ΠΊΡ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ Π² Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠ΅Π»Π΅ΠΊΡΠΎΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°.
ΠΠ°ΠΊ ΡΡΠΎ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ Ρ HTML:
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Ρ config$ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ Π΅Π³ΠΎ Π² HTML.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (containers/users/users.component.ts):
- ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ, ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ Π²Π½Π΅Π΄ΡΡΠ΅ΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
- ΠΠ° onInit ΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Π΅ΠΌΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
HTML Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ, ΠΏΠΎΡΡΠ»Π°Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°Ρ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π²ΡΡΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°:
ΠΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ· Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΡΡΠ°, Π° Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ Π²Ρ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρβ¦
ΠΡΠ»ΠΈ Π²Ρ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°Π΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈβ¦ Π½ΠΎ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΈΠ·ΡΡΠΈΠ»ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΈ Ρ Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π²Ρ Π±Π΅Π· ΡΡΡΠ΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ΡΡ Ρ ΡΡΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΡΠ½ΠΎΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² NGRX, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ² Π²Π°ΠΌ Π²ΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ.
Π― ΠΎΡΠ΅Π½Ρ Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π±Π΅ ΠΏΠΎΠ½ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π°ΠΌ ΡΠΊΠ°ΡΠ°ΡΡ Π΅Π³ΠΎ ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Angular? — ΠΠ»ΠΎΠ³ ITVDN
MiΕ‘ko ΡΠ°ΡΡΠΊΠ°Π·Π°Π» ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΈΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π² ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ 2013 Π³ΠΎΠ΄Π°:
βΠΡ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΏΠΎΠ½ΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΏΡΠΎΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ Π²Π΅Π±-Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΎΠ², Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². Π‘ΠΌΠΎΠ³ΡΡ Π»ΠΈ ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ HTML Π² ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΠΎΠ±ΡΡΠ½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠΎΡΠΌΡ Π²ΠΎ ΡΡΠΎ-ΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΠΎΡΡΠ΅Π΅, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΠΎ Π΅ΠΌΠ΅ΠΉΠ»Ρ. ΠΠ΄Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: Π±ΡΠ΄Ρ Ρ Π²Π°Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ, ΠΏΡΠΎΠ΄Π°ΡΡΠΈΠΉ ΠΏΠΈΡΡΡ ΠΈΠ»ΠΈ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠ΅, ΡΠΎ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π·Π°ΠΊΠ°Π·Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ΅Π³ΠΈ, ΠΈ ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ»ΠΈ Π±Ρ ΠΏΠΈΡΡΠΌΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ.»
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄ΠΎΠΌΠ΅Π½Β angular.comΒ Π±ΡΠ» Π·Π°Π½ΡΡ β ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈ ΡΠ΅ΠΉΡΠ°Ρ β ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π»ΠΈ Angular Π² GetAngular ΠΈ Π²ΡΠΏΡΡΡΠΈΠ»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°ΠΉΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ·Π½Π°ΡΡ ΠΎ Π²ΡΠ΅Ρ ΡΠΈΡΠ°Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°.
ΠΠΎΠΌΠ°ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡΠ° Angular ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π½Π° Π΄Π΅ΠΊΠ°Π±ΡΡ 2009 Π³ΠΎΠ΄Π° (ΠΈΠ· Internet Archive).Β
Π‘ΠΊΠΎΡΠΎ MiΕ‘ko Π½Π°ΡΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Google, Π° Π² 2010 Π³ΠΎΠ΄Ρ Π·Π°Π½ΡΠ»ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Google Feedback. MiΕ‘ko ΡΠ±Π΅Π΄ΠΈΠ» ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°, Brad Green, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΅Π³ΠΎ Angular. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠΊΠΎΠ² ΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² ΡΠ°Π±ΠΎΡΠ΅, ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΡΠ±Π΅Π΄ΠΈΡΡ Google Π² ΡΠΈΠ»Π΅ Angular.
Brad Green ΠΈ MiΕ‘ko Hevery ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠΈΠ» ΡΠ΄Π°Π»ΠΎΡΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Angular. ΠΡΠΎ ΡΠΊΡΠΈΠ½ΡΠΎΡ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ng-conf 2014 keynote, ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΠΈΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π½Π°ΡΡ Π²ΡΡ ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Angular.
ΠΡΠΊΠΎΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΏΠ΅Ρ Π° Google Feedback ΡΠ° ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π»Π° open-source Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈ Π² ΠΌΠ°Π΅ 2011 Π³ΠΎΠ΄Π° Π±ΡΠ»Π° Π²ΡΠΏΡΡΠ΅Π½Π° Π²Π΅ΡΡΠΈΡ Angular 1.0. Π ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π»Π΅Ρ Angular ΡΡΡΠ΅ΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°Π±ΠΈΡΠ°Π» ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ, ΠΈ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Google Π·Π°ΡΠ²Π»ΡΠ΅Ρ, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ 1,5 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Angular.
Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Angular?
Angular β ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ JavaScript, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»ΠΎΠΆΠ½ΡΡ
Π·Π°Π΄Π°Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ
, ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ.
Angular ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΄ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΉ ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°Ρ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. Angular — ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ JavaScript, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΎΠ±ΡΠΈΡΠ½ΡΠΉ style guide Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π½Π°Π³Π»ΡΠ΄Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ.
ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Angular?
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Angular Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π½ΠΎ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΡΠ»ΠΈ Π²Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΠ΅ΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ Angular, ΡΠΎΠ±ΡΠ°Π½Π½ΡΠΌΠΈ Π½Π° madewithangular.com, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΡΠΎΡΠΌ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½ΠΈΠΌΠΈ.
Angular ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠΎΡΠΌΠ°ΠΌΠΈ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ³Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Angular ΠΈ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠΌΠ°ΡΡΠ΅Π΄ΡΠΈΠ΅ Π²Π΅ΡΠΈ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΡΠΎΡΠΈΠ°Π»ΠΎΠ² ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Angular Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ form-based ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Angular Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π³Π΄Π΅ Π²Ρ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π³Π΅ΡΠΎΠ΅Π² ΠΈ ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΡΠ΅Π· ΡΠΎΡΠΌΡ.
ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π΅ΠΌΠΎ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Tour of Heroes ΠΈΠ· Angular Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
Angular Ρ ΠΎΡΠΎΡ Π² form-based ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , ΠΎΠ½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Angular — Π½Π΅ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ Π½Π΅ ΡΠ°ΠΌΡΠΉ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ JavaScript. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°ΡΡΠ΅ Π½Π΅ΡΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅, Π²Π°ΠΌ Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΠΏΡΠΎΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, jQuery. Angular Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΡΡΠ΅Π΄Π½ΠΈΡ ΠΈ Π±ΠΎΠ»ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ . ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ, ΡΡΠΎ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π² Angular Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ.
Angular ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ΅Π΄Π°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Π²Π΅Π±, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π° Windows ΠΈΠ»ΠΈ MaΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΡΡΠΎΡΠΈΠ°Π»ΠΎΠ² Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Angular-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ Electron project.
ΠΡΠ»ΠΈ ΠΆΠ΅ Ρ Π²Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π° Π²Π΅Π±, iOS ΠΈΠ»ΠΈ Android, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ NativeScript Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ Π²Ρ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡ ΠΊΠΎΠ΄ ΡΠ΅ΡΠ΅Π· ΡΡΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΡΠΊΠΎΠ½ΠΎΠΌΡ ΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Angular?
Angular Core Team ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π»ΡΠ΄Π΅ΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌ ΠΌΠΈΡΠ΅ ΠΈ ΠΈΠ· ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° Angular. ΠΡΠΈ ΡΡΠΎΠΌ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΎΠΊ Angular ΠΈΠ·ΠΎ Π΄Π½Ρ Π² Π΄Π΅Π½Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ Google. ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ 20 ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² Google Π²Ρ ΠΎΠ΄ΡΡ Π² Angular Core Team ΠΈ Π²ΡΠ΅ Π’ΠΠ-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Angular ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ Google.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Google Π½Π°Π΄ Angular, ΡΠ°ΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΌΠ½ΠΎΠ³ΠΎ Π² ΡΡΠΌ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠΈΠ»ΠΈΠΉ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°. ΠΠΎΠ»Π΅Π΅ Π΄Π²ΡΡ ΡΡΡΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π²Π½Π΅ΡΠ»ΠΈ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ Π² open-source ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Angular, Π² ΠΎΠ±ΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ΅ Π΅ΡΡΡ Π±Π΅ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΡΡΠΎΡΠΈΠ°Π»Ρ ΠΈ guides, ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
ΠΡΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΡΡΠΎ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΡΠΈ ΠΏΡΠΈΠ½ΡΡΠΈΡ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ.
ΠΠ°ΠΊΡΡ Π²Π΅ΡΡΠΈΡ Angular ΠΌΠ½Π΅ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Angular. ΠΠ΅ΡΡΠΈΡ 1 Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π°Β https://angularjs.org/ Β ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΡΠΎΠ³ΠΎ Angular, ΡΡΠΎ Π±ΡΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ MiΕ‘ko ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π² 2011 Π³ΠΎΠ΄Ρ. ΠΡΡΠ³Π°Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ Angular ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π° https://angular.io/. Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Angular β ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π°Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ Π΄Π»Ρ Π½ΠΎΠ²ΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ², ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΠΎΡΡΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Angular. Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° Angular Π±ΡΠ΄Π΅Ρ ΡΡΡΠ΅ΠΌΠΈΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Angular 1, Π½ΠΎ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Angular 1 Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²Π½Π΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ NativeScript Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Angular-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅?
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ± Angular, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ³Π»ΡΠ±ΠΈΠΌΡΡ Π² ΠΊΠΎΠ΄. ΠΠ°ΡΠ½ΡΠΌ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ βhello worldβ. ΠΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Angular Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ ΠΠ’ΠL-ΡΡΡΠ°Π½ΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
Π ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ΅Π³ < script >Β Π²Π½ΡΡΡΠΈ ΡΠ΅Π³Π° < head >Β ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌ, Π½ΠΎ Π² Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΎΠ½ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ β Π²Ρ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΠ΅ ΠΊΡΡΠΎΠΊ JavaScript-ΠΊΠΎΠ΄Π° Π² HTML-Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.Β Β
ΠΡΡΡ ΠΎΠ΄Π½Π° ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡ Π² Π²ΡΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ β ΡΠ»Π΅ΠΌΠ΅Π½Ρ < my-app >. ΠΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π¦Π΅Π»Ρ Angular β ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°ΡΡΠΈΡΡΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ ΠΠ’ΠL, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π²Π°ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠ΅Π³ΠΈ.
Π’Π°ΠΊΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ΅Π³ΠΈ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ, ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ΄Π΅. ΠΠΎΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Β < my-app >:
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°. ΠΠ΅ΡΠ²ΠΎΠ΅ β ΡΡΠΎ ΠΊΠΎΠ΄ Π½Π° TypeScript, Π° Π½Π΅ Π½Π° JavaScript. TypeScript ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π²Π°ΠΌ ΠΏΡΠ³Π°ΡΡΠΈΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Π²ΡΡΡΠ΅ΡΠ°Π»ΠΈΡΡ Ρ Π½ΠΈΠΌ ΡΠ°Π½ΡΡΠ΅, Π½ΠΎ Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Ρ ΠΏΠΎΠ½ΡΡΡ Π½Π΅ΡΡΡΠ΄Π½ΠΎ.
TypeScript β Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠ° Π½Π°Π΄ JavaScript, ΡΠΎ Π΅ΡΡΡ Π²Π΅ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ JavaScript Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½Π° TypeScript. ΠΡΡΠ°ΡΠΈ, Π²Π΅ΡΡ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠΉ Π²ΡΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ βΒ import,Β export,Β @Component ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ β ΡΡΠΎ ΠΈΠ»ΠΈ Π½ΡΠ½Π΅ΡΠ½ΠΈΠ΅ ΡΠΈΡΠΈ JavaScript, ΠΈΠ»ΠΈ ΡΠ΅, ΡΡΠΎ ΠΏΠΎΡΠ²ΡΡΡΡ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ. Π’Π°ΠΊ ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΡΠΈΡΠ΅ TypeScript, Π²Ρ ΠΈΠ·ΡΡΠ°Π΅ΡΠ΅ Π±ΡΠ΄ΡΡΠ΅Π΅ JavaScript. TypeScript, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅, ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
TypeScript Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Microsoft. ΠΠ½ ΡΡΠ°Π» ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΌΠ΅Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ Π½ΠΈΠΊΡΠ΄Π° Π½Π΅ Π΄Π΅Π½Π΅ΡΡΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π· ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° TypeScript-ΠΊΠΎΠ΄, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΒ < my-app >:
Π Angular Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ΅Π³ @Component, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ, ΡΡΠΎΠ±Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΊΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π² Π²Π°ΡΠ΅ΠΉ HTML-ΡΠ°Π·ΠΌΠ΅ΡΠΊΠ΅. Π£ Π²Π°Ρ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° @Component Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.Β
- Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ selector ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΠΌΡ ΡΠ΅Π³Π° ΠΏΡΠΈ Π²Π²ΠΎΠ΄Π΅ Π² HTML. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ° < my-app >Β ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Angular, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΠΈΠ΄ΠΈΡ ΡΠ΅Π³ < my-app >Β Π² HTML.
- Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ template ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅Ρ, ΡΡΠΎ HTML Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ template: «< h2 >Hello World< /h2Β >», ΡΡΡ Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ Angular ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΡΠΈ < my-app >Β ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠ΅Π³ < h2 >Β ΠΏΡΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅.Β
ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° βHello Worldβ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅.
ΠΠ°ΡΠ΅ΠΌ ΠΌΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Angular?
Angular- Π½Π΅ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π² ΠΌΠΈΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΈ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π²ΡΠ΅ΠΌΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΠΏΠΎΡΡΡΠΎΠ΅Π½. ΠΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΠΎΠ·ΡΠΌΠ΅ΡΠ΅ΡΡ Π·Π° Angular, ΡΠΎ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΡΡΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ±Ρ ΠΎΠ΄ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ Π΄Π°Π½Π½ΡΡ ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ.
Π₯ΠΎΡΠΈΡΠ΅ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΎΡΠΌΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ? Π₯ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΡΡΠ° ΡΠΎΡΠΌΠ° ΠΈΠΌΠ΅Π»Π° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ? ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Π³Π°ΠΉΠ΄. ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ? Π Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½ Π³Π°ΠΉΠ΄. ΠΠΎΠΏΠ°Π»ΠΈ Π² ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ ΠΎΡΠΈΡΠ΅ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΊΠΎΠ΄?
Π’Π°ΠΊΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠΆΠ΅ Π΅ΡΡΡ. Π₯ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ, ΠΊΠ°ΠΊ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ? Kendo UI ΠΈ ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΡΠΏΡΠΎΡΠ°ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ Π²ΡΡΠΎΠΊΠΎΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
ΠΠΎΠ»ΡΠ·ΡΡΡΡ Angular, Π½Π΅ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°ΠΉΡΠ΅ Π½Π° ΠΏΡΠΎΡΡΠΎΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, Π½ΠΎ Π±ΡΠ΄ΡΡΠ΅ ΡΠ²Π΅ΡΠ΅Π½Ρ Π² Π΅Π³ΠΎ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎΠΉ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΠΈ ΠΈ Ρ ΠΎΡΠΎΡΠ΅ΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΡΠΎΡΡΠ» Π½Π΅ ΠΎΠ΄Π½ΠΎ Π±ΠΎΠ΅Π²ΠΎΠ΅ ΠΈΡΠΏΡΡΠ°Π½ΠΈΠ΅ ΠΈ Π·Π°ΡΠ»ΡΠΆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΡΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘ΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ Angular β ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅, ΠΈ Π²ΡΠ΅ Ρ Π΅Π»ΠΏΡ Π»Π΅Π³ΠΊΠΎ Π½Π°ΠΉΡΠΈ Π² Google, Stack Overflow ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ. ΠΡΠΈΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°? Π’ΡΡΡΡΠΈ Angular Π΄Π΅Π²Π΅Π»ΠΎΠΏΠ΅ΡΠΎΠ² ΠΎΡΠΊΠ»ΠΈΠΊΠ½ΡΡΡΡ Π½Π° Π²Π°Ρ Π·Π°ΠΏΡΠΎΡ. ΠΡΡΡ Π΄Π°ΠΆΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΠΊΡΡΡΠΈΠ½Π³ΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΡΡ.
Π― ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π» ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Angular β ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ? ΠΠ΅ΡΠ½Π΅ΠΌΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΡ Hello World. Π£ Π²Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ Π½Π°ΡΠ°Π»ΠΎ Π΄Π»Ρ iOS ΠΈ Android ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ HTMLΒ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ NativeScript ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅, ΠΊΠ°ΠΊΒ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ. ΠΠΎΡ ΡΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠΎΠ΄.
Π Π²ΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Π½Π°ΡΠΈΠ²Π½ΡΡ iOS ΠΈ Android ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
AngularΒ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ. ΠΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΡΡΡΠ°ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΌΡΠ»ΡΡΠΈΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Angular ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Β
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΈΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ Angular, Π½Π°ΡΠΈΠ½Π°ΠΉΡΠ΅ ΠΈΠ·ΡΡΠ°ΡΡ ΡΡΡΠΎΡΠΈΠ°Π»Ρ ΠΏΠΎ Π±ΡΡΡΡΠΎΠΌΡ ΡΡΠ°ΡΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Angular ΠΈ Π½Π°ΡΠΈΠ½Π°ΠΉΡΠ΅ ΠΊΠΎΠ΄ΠΈΡΡ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Angular Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ NativeScript. ΠΡ ΠΈΠ·ΡΡΠΈΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² JavaScript, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅ΡΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ ΡΠΎ ΡΡΠΎΠ»Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΠΌΠΈΡΠΎΠΌ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΠΈΠ³ΠΈΠ½Π°Π» ΡΡΠ°ΡΡΠΈ: http://linkis.com/telerik.com/7vemI
10 ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Angular, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΡΠΏΡΡΠΊΠ°Π»ΠΈ
ΠΡΠ»ΠΈ Π²Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Angular ΠΈ ΠΏΠΎΡΡΠ°ΡΠΈΠ»ΠΈ Π½Π° ΡΡΠΎ Π½Π΅ ΠΎΠ΄Π½Ρ ΡΠΎΡΠ½Ρ ΡΠ°ΡΠΎΠ², Π²Ρ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π·Π½Π°Π΅ΡΠ΅ ΠΎΠ± ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ . ΠΠΎ, Π²ΡΡ ΠΆΠ΅, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ β ΠΏΡΠΎΡΡΠΈΡΠ΅ π
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ Angular, ΡΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. Bit (Github) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ Π»Π΅Π³ΠΊΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ Angular-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ Π²ΠΌΠ΅ΡΡΠ΅ ΠΈ Π΄Π΅Π»ΠΈΡΡΡΡ ΠΈΠΌΠΈ. ΠΡ Π΄ΡΡΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΠΊΠΎΠ΄Π΅.
ΠΡΠΈΠΌΠ΅Ρ: ΠΡΡΠ³ΠΎΠ²ΡΠ΅ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΈ Π΄Π»Ρ Angular Ρ bit.dev
1. Title
Π’Π΅Π³ title β ΡΡΠΎ HTML-ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΠΎΠΈΡΠΊΠ° (SERP) Π² Π²ΠΈΠ΄Π΅ ΠΊΠ»ΠΈΠΊΠ°Π±Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π³Π»Π°Π²ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. ΠΠ½ΠΈ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Ρ Π΄Π»Ρ ΡΠ·Π°Π±ΠΈΠ»ΠΈΡΠΈ, SEO ΠΈ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π² ΡΠΎΡ. ΡΠ΅ΡΡΡ .
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Angular Π±Π΅ΡΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈΠ· ΡΠ΅Π³Π° … Π² index.html. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ Π² Angular ΡΡΠΎΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ.
ΠΠ½Π°Π΅ΡΠ΅ Π»ΠΈ Π²Ρ, ΡΡΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°?
Π Angular Π΅ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ Title Π² angular/platform-browser. ΠΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π²Π½Π΅Π΄ΡΠΈΡΡ Π΅Π³ΠΎ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ setTitle, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ.
import { Title } from "@angular/platform-browser"@Component({
...
})
export class LoginComponent implements OnInit {
constructor(private title: Title) {} ngOnInit() {
title.setTitle("Login")
}
}
ΠΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ ΠΊ LoginComponent Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π° Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ Π½Π° βLoginβ.
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π² Π»ΡΠ±ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ Π²Π½ΡΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½ΡΡΡΡΡ, ΡΠ΅Π°Π³ΠΈΡΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
2. Meta
ΠΠ΅ΡΠ°ΡΠ΅Π³ΠΈ Angular-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠΆΠ΅ Π±Π΅ΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° index.html. Π ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°Π²Π°ΡΡ ΠΈΡ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ Meta ΠΈΠ· angular/platform-browser.
Π ΡΠ½ΠΎΠ²Π°: ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠ°ΡΠ΅Π³ΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ SEO ΠΈ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ Π² ΡΠΎΡ. ΡΠ΅ΡΡΡ , ΠΎΠ½ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π½ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ ΠΏΠΎΠΈΡΠΊΠ°.
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΌΠ΅ΡΠ°ΡΠ΅Π³ΠΎΠ², ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ Meta ΠΈΠ· angular/platform-browser ΠΈ Π²Π½Π΅Π΄ΡΠΈΡΠ΅ Π² Π½ΡΠΆΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
import { Meta } from "@angular/platform-browser"@Component({
...
})
export class BlogComponent implements OnInit {
constructor(private meta: Meta) {} ngOnInit() {
meta.updateTag({name: "title", content: ""})
meta.updateTag({name: "description", content: "Lorem ipsum dolor"})
meta.updateTag({name: "image", content: "./assets/blog-image.jpg"})
meta.updateTag({name: "site", content: "My Site"})
}
}
Π’Π΅ΠΏΠ΅ΡΡ BlogComponent ΡΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² Twitter, Facebook ΠΈ Ρ.Π΄. ΠΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ²ΠΎΠ΄Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ, ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅.
ΠΠ± ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΠ»ΡΡΠ°Π»ΠΈ? Π’ΠΎΠ³Π΄Π° Π²ΠΎΡ ΠΊΠΎΠ΅-ΡΡΠΎ ΠΏΠΎΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅.
3. ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ²
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΎΡ Π² ΡΠ°Π±Π»ΠΎΠ½Π°Ρ β {{}}. ΠΡΠ»ΠΈ Π²ΠΏΠΈΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ {{ ΠΈ }}, Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡ Π² ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΌ DOM.
ΠΠ½Π°Π΅ΡΠ΅ Π»ΠΈ Π²Ρ, ΡΡΠΎ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ³ΠΎΠ΄Π½ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ? ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΠΈ Π² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ΅ Component.
@Component({
interpolation: ["((","))"]
})
export class AppComponent {}
ΠΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅ AppComponent ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ Π½Π° (()), Π° {{}} Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
@Component({
template: `
<div>
((data))
</div>
`,
interpolation: ["((","))"]
})
export class AppComponent {
data: any = "dataVar"
}
Π Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° Β«dataVarΒ» Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° Π½Π° ΠΌΠ΅ΡΡΠ΅ ((data)).
4. Location
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ URL ΡΡΡΠ°Π½ΠΈΡΡ, ΠΎΡΠΊΡΡΡΠΎΠΉ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅ΡΠ²ΠΈΡ Location. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ LocationStrategy ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Location Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΠΏΡΡΠΈ Π² URL (/example/page/), Π»ΠΈΠ±ΠΎ ΠΏΠΎ ΡΠ°ΡΡΠΈ URL ΠΏΠΎΡΠ»Π΅ ΡΠ΅ΡΡΡΠΊΠΈ (#test/page/).
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Location ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ URL-Π°Π΄ΡΠ΅ΡΡ, ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π²ΠΏΠ΅ΡΠ΅Π΄ Π² ΠΈΡΡΠΎΡΠΈΠΈ, Π²Π΅ΡΠ½ΡΡΡΡΡ Π½Π°Π·Π°Π΄, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ URL-Π°Π΄ΡΠ΅Ρ, ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΈΡΡΠΎΡΠΈΠΈ.
ΠΠ΄Π΅ΡΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠ²ΠΈΡ Location ΠΈΠ· CommonModule.
import { Location } from "@angular/common"@Component({
...
})
export class AppComponent {
constructor(private location: Location) {} navigateTo(url) {
this.location.go(url)
} goBack() {
location.back()
} goForward() {
location.forward()
}
}
5. Document
ΠΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ DOM ΠΏΡΡΠΌΠΎ ΠΈΠ· Angular ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
DOCUMENT ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ ΡΠ»ΡΠΆΠΈΡ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ. DOCUMENT β ΡΡΠΎ DI-ΡΠΎΠΊΠ΅Π½, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π°. Π Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΡΡΠΎ DOM Document. ΠΠ½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ DOM Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Document ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Application Context, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ Application ΠΈ Rendering Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Web Worker).
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ HTML ΡΠ»Π΅ΠΌΠ΅Π½Ρ:
<canvas></canvas>
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ canvas HTMLElement Π²Π½Π΅Π΄ΡΡΠ΅ΠΌ DOCUMENT:
@Component({})
export class CanvasElement {
constructor(@Inject(DOCUMENT) _doc: Document) {}
}
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ HTMLElement canvas ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ getElementById()
@Component({})
export class CanvasElement {
constructor(@Inject(DOCUMENT) _doc: Document) {} renderCanvas() {
this._doc.getElementById("canvas")
}
}
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ DOCUMENT ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎ! ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ DOM Π½Π°ΠΏΡΡΠΌΡΡ ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠΈΡΠΊ XSS.
6. ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ @Attribute
Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, Π² Angular ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Component, Module ΠΈ Directive.
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΡ Π΅ΡΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Attribute, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΠΎΠΊΡ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ Π·Π°ΡΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΌΠΈΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
ΠΠ½Π°ΡΠ΅Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° Attribute ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Input:
@Component({
...
})
export class BlogComponent {
constructor(@Attribute("type") private type: string ) {}
}
7. HttpInterceptor
HttpInterceptor β ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π² Angular, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ HttpRequest ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈΡ .
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠΈΠΊΠΎΠ² ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡ ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠΈΠΊΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ΅, Π²ΡΠ·ΡΠ²Π°Ρ next.handle(transformedReq).
Π ΡΠ΅Π΄ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ Π·Π°ΠΏΡΠΎΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, Π° Π½Π΅ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΡΠ°Π²ΡΡΡΡΡ ΡΠ°ΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π΄Π°Π»ΡΡΠ΅. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ.
HttpInterceptor ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²:
- ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ
- ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ
- Fake backend
- Π’ΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ URL
- ΠΠΎΠ΄ΠΌΠ΅Π½Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠΈΠΊΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ HttpInterceptor.
@Injectable()
export class MockBackendInterceptor implements HttpInterceptor {
constructor() {} intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
...
}
}
ΠΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ:
@NgModule({
...
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: MockBackendInterceptor,
multi: true
}
]
...
})
export class AppModule {}
8. AppInitializer
ΠΠ½ΠΎΠ³Π΄Π°, ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Angular-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΊΡΡ, Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. Π’ΠΎΠΊΠ΅Π½ AppInitialzer ΡΠΎΠ·Π΄Π°Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ.
APP_INITIALIZER: ΡΡΠ½ΠΊΡΠΈΡ, ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠ°Ρ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΏΠΎ ΡΠ°ΠΊΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠΏΡΡΡΠΈΠΌ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ runSettings ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ Angular-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
function runSettingsOnInit() {
...
}
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ AppModule ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ Π² ΡΠ°Π·Π΄Π΅Π» ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° NgModule:
@NgModule({
providers: [
{ provide: APP_INITIALIZER, useFactory: runSettingsOnInit }
]
})
9. Bootstrap Listener
ΠΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ Ρ AppInitialzer, Π² Angular Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΡΠΎ APP_BOOTSTRAP_LISTENER.
ΠΡΠ΅ ΠΊΠΎΠ»Π»Π±Π΅ΠΊΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ ΡΡΠΈΠΌ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ, Π±ΡΠ΄ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°.
ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ΄ΡΠ»Ρ Router ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΅Ρ Π΄Π»Ρ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ ΠΏΠΎ ΠΌΠ°ΡΡΡΡΡΡ.
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ APP_BOOTSTRAP_LISTENER, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ°Π·Π΄Π΅Π» ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² Π² AppModule Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°:
@NgModule({
{
provide: APP_BOOTSTRAP_LISTENER, multi: true,
useExisting: runOnBootstrap
}
...
})
export class AppModule {}
10. NgPlural
ΠΠ»ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ β Π³ΠΎΠ»ΠΎΠ²Π½Π°Ρ Π±ΠΎΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². ΠΠ°Π΄Π°ΡΠ° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ»ΠΎΠ²ΠΎΡΠΎΡΠΌ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ / ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΉΡΡ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠ΅ (s). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
1 component(s) removed
3 component(s) removed
Π’ΠΎ Π΅ΡΡΡ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΡΠ°ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ π
Angular ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠ²ΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ NgPlural.
NgPlural Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΏΠΎΠ΄Π²Π΅ΡΠ²ΠΈ DOM Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΠΏΠ»ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ β ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ.
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡ [ngPlural] ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² Π²ΠΈΠ΄Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ-ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ. ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ [ngPluralCase] ΠΎΡΠΎΠ±ΡΠ°Π·ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π°Π΄Π°Π½Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ:
<p [ngPlural]="components">
<ng-template ngPluralCase="=1">1 component removed</ng-template>
<ng-template ngPluralCase=">1">{{components}} components removed </ng-template>
</p>
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠΎΡΠΈΡΡ β(s)β. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° NgPlural ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΠ»ΠΎΠ²ΠΎΡΠΎΡΠΌΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠΎΠ³:
// if 1 component
1 component removed
// if 5 components
5 components removed
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² AngularJS
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ AngularJS
ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: 26.04.2017
AngularJS ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ opensource JavaScript-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΡΠ°Π±Π»ΠΎΠ½ MVC. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ MVC ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠ»ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ.
ΠΠ»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π° Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΡΠ΄Π΅Π»Π΅Π½Π° ΠΎΡ ΠΊΠΎΠ΄Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ»ΡΡΡΠΈΡΡ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΈ
ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΡΠ³ΠΎΠΉ ΠΎΡΠ»ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½Π΅Π΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΡΠΈ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ
ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² Π΄ΡΡΠ³ΠΎΠΌ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, AngularJS ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, AngularJS ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊ Ajax, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΠΎΡΠΎΠΉ DOM, Π°Π½ΠΈΠΌΠ°ΡΠΈΡ, ΡΠ°Π±Π»ΠΎΠ½Ρ, ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΠΎΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°,
Π½Π°Π»ΠΈΡΠΈΠ΅ Π±ΠΎΠ³Π°ΡΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ ΠΏΠΎΠ²Π»ΠΈΡΠ»Π° Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠ½ Π½Π°Ρ
ΠΎΠ΄ΠΈΡ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ²Π»ΡΡΡΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ
ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ°ΠΌΡΡ
ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ
javascript-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ².
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°: http://angularjs.org/.
Π’Π°ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΡΠ°ΠΌΠΈ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΎΠ±ΡΡΠ°ΡΡΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π±ΡΠ»Π° Π²Π΅ΡΡΠΈΡ 1.6.4.
ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ c AngularJS
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ AngularJS. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°ΠΉΠ»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π°Π³ΡΡΠ·ΠΈΠΌ ΡΠ°ΠΌΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²ΡΡΠ΅:
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΈΠ· ΡΠ΅ΡΠΈ CDN ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Google: https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js.
ΠΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ zip-ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΌΡ Π½Π°ΠΉΠ΄Π΅ΠΌ Π² Π½Π΅ΠΌ ΠΊΡΠΎΠΌΠ΅ ΡΠ°ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (angular.js) Π΅ΡΠ΅ ΡΡΠ΄ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ:
angular-touch.js: ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΡΠ΅Π½ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠ°Π½Π°
angular-animate.js: ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ
angular-aria.js: ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ aria-Π°ΡΡΠΈΠ±ΡΡΠΎΠ² (accesible rich internet application)
angular-mocks.js: ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ mock-ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄Π»Ρ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
angular-route.js: ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ
angular-sanitize.js: ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ (javascript, html)
angular-cookies.js: ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΡΠΊΠ°ΠΌΠΈ
angular-loader.js: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ angularjs-ΡΠΊΡΠΈΠΏΡΠΎΠ²
angular-messages.js: ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
angular-resource.js: ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ
ΠΠ°ΠΏΠΊΠ° i18n: ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ js-ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ
ΠΠ· Π²ΡΠ΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π² Π°ΡΡ ΠΈΠ²Π΅ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ» angular.min.js
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ HelloWorld. ΠΠΎΠ΄ html-ΡΡΡΠ°Π½ΠΈΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
<!doctype html> <html ng-app> <head> <meta charset="utf-8"> </head> <body> <label>ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ:</label> <input type="text" ng-model="name" placeholder="ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ"> <h2>ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ {{name}}!</h2> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script> </body> </html>
ΠΠ΅ΡΠ²ΠΎΠ΅, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΡΡΠΎ Π±ΡΠΎΡΠ°Π΅ΡΡΡ Π² Π³Π»Π°Π·Π° — ΡΡΠΎ Π½ΠΎΠ²ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠ΅Π³Π°ΠΌ html (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ng-app
ΠΈ
ng-model
). ΠΡΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° AngularJS. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΡ
Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ng-app
ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ <html>
ΠΊΠΎΡΠ½Π΅Π²ΡΠΌ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π°
Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ng-model
ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ «name», ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ²ΡΠ·Π°Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° input. Π ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΠΊΡΡΠ° Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ input, ΠΌΠΎΠ΄Π΅Π»Ρ «name»
ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π§ΡΡΡ Π½ΠΈΠΆΠ΅ Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ <h2>ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ {{name}}!</h2>
Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
Π ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ.
Π£Π³Π»ΠΎΠ²ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
AngularJS ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Ρ HTML Ρ ΠΏΠΎΠΌΠΎΡΡΡ Expressions .
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ AngularJS
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ AngularJS ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ: {{ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ }}
.
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ AngularJS ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π²Π½ΡΡΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ: ng-bind = " expression "
.
AngularJS ΡΠ°Π·ΡΠ΅ΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π΅ΡΠ½Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΎΡΠ½ΠΎ Π² ΡΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π³Π΄Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅.
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ AngularJS ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆΠΈ Π½Π° JavaScript
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ: ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΡΠΈΠΌΠ΅Ρ {{5 + 5}} ΠΈΠ»ΠΈ {{firstName + «» + lastName}}
ΠΡΠΈΠΌΠ΅Ρ
ΠΠΎΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅: {{5 + 5}}