Javascript ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы: JavaScript β€” Π»ΡƒΡ‡ΡˆΠΈΠΉ язык программирования для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π’Π°ΠΊ это ΠΈΠ»ΠΈ Π½Π΅Ρ‚?

JavaScript β€” Π»ΡƒΡ‡ΡˆΠΈΠΉ язык программирования для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…. Π’Π°ΠΊ это ΠΈΠ»ΠΈ Π½Π΅Ρ‚?
JavaScript, нСсмотря Π½Π° Π΅Π³ΠΎ многочислСнныС нСдостатки, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, являСтся самым Π»ΡƒΡ‡ΡˆΠΈΠΌ языком программирования для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠΌ языком, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²ΠΎΠ·ΠΈΡ‚ΡŒΡΡ Π΄Π΅Ρ‚ΠΈ.


Π¨Ρ‘Π» 2007 Π³ΠΎΠ΄. ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΈΠ·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ тСхничСских ΠΊΠ½ΠΈΠ³ O’Reilly Media ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ ΠΊΠΎ ΠΌΠ½Π΅, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ² ΠΎΠ΄Π½Ρƒ идСю. Они спросили мСня ΠΎ Ρ‚ΠΎΠΌ, Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ я Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ ΠΎ JavaScript, которая ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°Π»Π°ΡΡŒ Π±Ρ‹ для Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Ρ… Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Β«Π‘ ΠΊΠ°ΠΊΠΎΠΉ стати?Β», β€” Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π·Π°Π΄Π°Π» я встрСчный вопрос.

НСльзя Π±Ρ‹Π»ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ JavaScript Π² Ρ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π±Ρ‹Π» ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ бСсполСзным языком. Но ΠΎΠ½ прСдставлял собой лишь ΠΎΠ΄ΠΈΠ½, Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ самый Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚ ΠΈΠ· Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-сайтов. Π”Π°, нСбольшиС кусочки JS-ΠΊΠΎΠ΄Π° ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ„ΠΎΡ€ΠΌ, ΠΈΠ»ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ наводят ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ. Но JavaScript прСдставлял собой лишь Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ сайта. Если ΡƒΠ±Ρ€Π°Ρ‚ΡŒ Π΅Π³ΠΎ со страницы, Ρ‚ΠΎ всё ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ практичСски Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ с Π΅Π³ΠΎ использованиСм.

JavaScript, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, тянул Π·Π° собой Π½Π΅ΠΌΠ°Π»Ρ‹ΠΉ Π±Π°Π³Π°ΠΆ, прСдставлСнный Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ тСхнологиями. Π’Π°ΠΊ, с Π½ΠΈΠΌ Π±Ρ‹Π»ΠΈ связаны ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ нСсовмСстимости Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ², ΠΎΠ½ Π±Ρ‹Π» ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ, нСбСзопасным, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅Π½Π°Π΄Ρ‘ΠΆΠ½Ρ‹ΠΌ. Π― Π½Π΅ Π±Ρ‹Π» заинтСрСсован Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° JavaScript бСсполСзныС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ для Π²Π΅Π±-страниц. Π­Ρ‚ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ казались ΠΌΠ½Π΅ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ бСссмыслСнными, ΠΊΠ°ΠΊ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π³ΠΈΡ„ΠΊΠΈ с Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΌΡΡ Π·Π΅ΠΌΠ½Ρ‹ΠΌ ΡˆΠ°Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ вСсьма популярными Π½Π° Π·Π°Ρ€Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.


Π‘Π°ΠΌΡ‹ΠΌ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ способом использования JavaScript, ΠΊΠ°ΠΊ ΠΌΠ½Π΅, ΠΏΠΎ наивности, Ρ‚ΠΎΠ³Π΄Π° казалось, Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: большой сСрвСрный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСсь Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ JS-ΠΊΠΎΠ΄ ΠΈ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² страницу, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для вашСго Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. JavaScript-ΠΊΠΎΠ΄, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ сСрвСром, ΠΌΠΎΠ³ Π±Ρ‹ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слишком Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ, Π½ΠΎ ΠΎΠ½ Π±Ρ‹Π» Π±Ρ‹ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ вСрсии Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. А учитывая Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ JS ΠΈΠ³Ρ€Π°Π» лишь Ρ€ΠΎΠ»ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°, ΠΏΡ€ΠΈ этом всё Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π±Ρ‹ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ Π΄Π°ΠΆΠ΅ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π±Ρ‹ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ сайта ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΠ» Π±Ρ‹ JavaScript.

НСт Π½ΡƒΠΆΠ΄Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ³Π΄Π° я ΠΊΠ½ΠΈΠ³Ρƒ ΠΎ JavaScript Π½Π΅ написал. Π― ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ сСрвСрным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎ ΠΌΠΎΠΈΡ… Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… тСхнологиях (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎ языкС Π‘# ΠΈ ΠΎ .NET Framework). ΠŸΡ€ΠΎΡˆΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚.

Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π½Π΅Ρ‡Ρ‚ΠΎ странноС.

JavaScript Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Β«Π²Π·Π»Π΅Ρ‚Π΅Π»Β».

Π― всё Π΅Ρ‰Ρ‘ Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ JavaScript заслуТиваСт чСсти Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π»ΡƒΡ‡ΡˆΠΈΠΌ Π² ΠΌΠΈΡ€Π΅ языком программирования. Π― Π΄Π°ΠΆΠ΅, Ссли ΡƒΠΆ совсСм чСстно, Π½Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽ Π΅Π³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ языком. Но ΠΊΠΎΠ΅-Π² Ρ‡Ρ‘ΠΌ я своё ΠΌΠ½Π΅Π½ΠΈΠ΅ помСнял. Π’Π΅ΠΏΠ΅Ρ€ΡŒ я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ JavaScript, вСроятно, являСтся Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ языком для Π΄Π΅Ρ‚Π΅ΠΉ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов. Всё Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ JavaScript Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Π΅ΠΉΡˆΠ΅Π΅ прСимущСство ΠΏΠ΅Ρ€Π΅Π΄ всСми ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ языками программирования.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠŸΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π°Ρ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Ρ‘Π½Π½ΠΎΡΡ‚ΡŒ JavaScript β€” Π΅Π³ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅ прСимущСство


Одним ΠΈΠ· ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… прСимущСств JavaScript являСтся Π΅Π³ΠΎ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½Ρ‘Π½Π½ΠΎΡΡ‚ΡŒ.

Π­Ρ‚ΠΎΡ‚ язык ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ. Он поддСрТиваСтся Π½Π° всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, Π²ΠΎ всСх Π²ΠΈΠ΄Π°Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ², ΠΈ Π½Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…, ΠΈ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах. ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ Π΅Ρ‰Ρ‘ ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ JavaScript-прилоТСния Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π±Π΅Π· установки ΠΈΡ… Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. На самом Π΄Π΅Π»Π΅, ΡƒΠΆΠ΅ слоТно Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π½Π΅ Ρ‚Π°ΠΊΠΈΠ΅ ΡƒΠΆ ΠΈ Π΄Π°Π²Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π°, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, развёртывая ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрныС прилоТСния Π² своих Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… сСтях, Ρ‚Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π½Π΅Π΄Π΅Π»ΠΈ, Π±ΠΎΡ€ΡΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ настройки этих ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ с Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌΠΈ ошибками. Π‘Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ²ΡˆΠΈΡΡŒ с ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ ΠΊΠΎΡˆΠΌΠ°Ρ€Π°ΠΌΠΈ, Π²Ρ‹ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ JavaScript.

JavaScript, благодаря Π΅Π³ΠΎ распространённости, Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ самым Π»ΡƒΡ‡ΡˆΠΈΠΌ языком программирования. Π•ΠΌΡƒ всСго лишь Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ языком.

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΈ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Ρ‡ΡŒ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ± ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ программирования. ΠŸΠΎΠ½Π°Ρ‡Π°Π»Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° распространённости языка Π½Π΅ каТСтся особСнно Π²Π°ΠΆΠ½ΠΎΠΉ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡ΡŒΡ Ρ†Π΅Π»ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ практичСскиС ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Но мноТСство Ρ‚Π΅Ρ… ΠΆΠ΅ самых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹, ΠΊΠ°ΠΊ ΠΈ для ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования, Π² ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ создали, ΠΌΠΎΠ³ Π±Ρ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΡ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Ρ‚ΠΎ JavaScript β€” это СдинствСнная Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅, задавая ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ вопросы, опрСдСляСт Π΅Π³ΠΎ личностный ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ. ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ довольно просто. Но Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ свою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰Ρƒ? ΠŸΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡΡ Π»ΠΈ Π΅ΠΌΡƒ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρƒ сСбя срСду Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΈΠ»ΠΈ Π²ΠΎΡΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Ρƒ ΠΆΠ΅ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ Ρƒ вас? НуТно Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Β«ΠΏΠΎΠ΄ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒΒ» настройки бСзопасности Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ½ смоТСт Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ? ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ваш Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, которая попросту Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈΠ»ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ, Ссли Π½Π΅ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ прилоТСния, распространяСмыС Ρ‡Π΅Ρ€Π΅Π· iTunes ΠΈΠ»ΠΈ Google Play? Если ΠΆΠ΅ Π²Ρ‹, для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ JavaScript, Π° для Π΅Ρ‘ распространСния β€” простой Π²Π΅Π±-сайт (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, GitHub позволяСт бСсплатно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ сайты), Ρ‚ΠΎ всС эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ попросту исчСзнут.

А Ссли наш Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΉ программист β€” Ρ€Π΅Π±Ρ‘Π½ΠΎΠΊ, Ρ‚ΠΎ Π²ΠΎΡ‚ Π²Π°ΠΌ Π½Π΅ΠΎΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΆΠΈΠΌΡ‹ΠΉ Ρ„Π°ΠΊΡ‚: Π΄Π΅Ρ‚ΠΈ ΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ сильно связаны. Если Π²Ρ‹ наблюдали Π·Π° Ρ€Π΅Π±Ρ‘Π½ΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ (Π½Π΅ Π½Π° мобильном устройствС), Ρ‚ΠΎ Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 98% Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ. Π”Π΅Ρ‚ΠΈ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹Π΅ ΠΈΠ³Ρ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ сСти, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΡˆΠΊΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π΅Π»Π°ΠΌΠΈ Π² Google Classroom ΠΈ Google Docs. И Ссли ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΈΡˆΡƒΡ‚ Π΄Π΅Ρ‚ΠΈ, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ€ΠΎΠ΄Π½ΠΎΠΌ для Π½ΠΈΡ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½ΠΎΠΌ ΠΌΠΈΡ€Π΅, это Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ СстСствСнно.

БСйчас ΠΌΡ‹ обсуТдали ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны JavaScript. Но, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, говоря ΠΎ JavaScript ΠΊΠ°ΠΊ ΠΎ языкС программирования для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, нСльзя Π½Π΅ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΈ ΠΎ Π΅Π³ΠΎ нСдостатках.

НСдостатки JavaScript


Как насчёт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ JavaScript? Π£ этого языка Π΅ΡΡ‚ΡŒ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹Π΅ нСдостатки, Π΅Π³ΠΎ ΠΏΡ€ΠΈΡ‡ΡƒΠ΄Ρ‹, противорСчия ΠΈ ограничСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½Π΅ нСприятными для Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ соврСмСнныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ³Π»Π°Π΄ΠΈΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ нСдостатков JavaScript.

Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ основныС ΠΏΡ€Π΅Ρ‚Π΅Π½Π·ΠΈΠΈ, ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Π΅ ΠΊ этому языку.

▍1. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² JavaScript


Π’Π°ΠΆΠ½Π΅ΠΉΡˆΠ΅ΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты ΠΎΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π½ΠΎ, являСтся идСя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранят ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° JavaScript Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ этот язык слишком вольно ΠΈ Π½Π΅Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ обращаСтся с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Он позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ выглядит ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ, ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ нСстыковки. Π•Π³ΠΎ Ρ…Π°Π»Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ способна ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ Π² катастрофы, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π΅Ρ‡Ρ‘Π½ Π½Π° ΠΏΡ€ΠΎΠ²Π°Π»:

var myNumber = 100;
myNumber = myNumbr + 1;

Π£Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ? Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкС, Π½Π° самом Π΄Π΅Π»Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…: пСрСмСнная myNumber, которая Π±Ρ‹Π»Π° объявлСна Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС, ΠΈ нСкая фиктивная пСрСмСнная myNumbr. ΠœΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ вторая пСрСмСнная β€” это Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΊΠΈ, Π½ΠΎ JavaScript сообщит Π½Π°ΠΌ ΠΎΠ± этом Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹Π΄Π°Π² сообщСниС ΠΎΠ± ошибкС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ выглядит ΠΊΠ°ΠΊ ReferenceError: myNumbr is not defined. Π’ΠΎ ΠΆΠ΅ самоС происходит ΠΈ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΏΡ€ΠΈ записи ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Π»ΠΈ большиС ΠΈ малСнькиС Π±ΡƒΠΊΠ²Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, пСрСмСнная ΠΈΠ· myNumber случайно ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ Π² MyNumber). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ ΡƒΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π°, ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΈ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π²Ρ‹, считая, Ρ‡Ρ‚ΠΎ нСкая пСрСмСнная Ρ…Ρ€Π°Π½ΠΈΡ‚ число, прибавляСтС ΠΊ Π½Π΅ΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ число, Π° эта пСрСмСнная, Π½Π° самом Π΄Π΅Π»Π΅, содСрТала строку ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. JavaScript Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π½Π΅ сообщит ΠΎΠ± ошибкС, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСний Π±ΡƒΠ΄Π΅Ρ‚ совсСм Π½Π΅ Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΎΡ‚ слоТСния Π΄Π²ΡƒΡ… чисСл. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ JavaScript-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π½Π΅ΠΏΡ€ΠΈΡΡ‚Π½ΡƒΡŽ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π»Π° странныС ошибки Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ….

Достаточно слоТно ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈ, Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя, Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΉ язык программирования ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π½Π°Π²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ. Но, ΠΊ ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ бСзопасной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ подходящих инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Один ΠΈΠ· ΠΌΠΎΠΈΡ… Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈ для изучСния программирования, ΠΈ для ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ использования β€” это Visual Studio Code. Он бСсплатСн, Π½Π΅Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»Π΅Π½ ΠΊ рСсурсам, Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ практичСски Π΄ΠΎ бСсконСчности Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ. Одна ΠΈΠ· Π΅Π³ΠΎ самых Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ JavaScript-ΠΊΠΎΠ΄Π° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² Π½Ρ‘ΠΌ распространённых ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ срСдствами TypeScript. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ, воспользовавшись ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΈΠ»ΠΈ вставив ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π² Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ JavaScript-Ρ„Π°ΠΉΠ»Π°:

// @ts-check

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π΅ ошибки, Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния JavaScript, ошибкой Π½Π΅ являСтся.
ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ JavaScript Π½Π΅ считаСт ошибками

Если Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»ΠΎ этого Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ // @ts-check, Ρ‚ΠΎ VS Code Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ строки ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ошибки.


Π’Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ строки ΠΊΠΎΠ΄Π°

Если навСсти ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ Π½Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ строку, появится Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅ ΠΎΠΊΠ½ΠΎ, содСрТащСС объяснСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.


ОбъяснСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

КакиС ΠΈΠ· этого ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Ρ‹? Π₯отя JavaScript Ρ‚ΠΎΠ»Π΅Ρ€Π°Π½Ρ‚Π½ΠΎ относится ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π½Π΅Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Π΅Ρ‰Π°ΠΌ, Ссли ΡΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ JavaScript с качСствСнным Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ΄Π° ΠΈ с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ инструмСнтами, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ соврСмСнныС языки программирования. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° JavaScript оказываСтся Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, ΠΈ, СстСствСнно, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΅Π³ΠΎ прСимущСства Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ Π΄Π΅Π²Π°ΡŽΡ‚ΡΡ.

▍2. JavaScript Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ООП


ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП) β€” это ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ ООП ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ программисту ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ простой ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ООП ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

JavaScript ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ извСстСн отсутствиСм ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. На самом Π΄Π΅Π»Π΅, JavaScript-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎ обходят этот нСдостаток, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ всячСскиС странныС конструкции. Π­Ρ‚ΠΈ конструкции ΠΌΠΎΠ³ΡƒΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ ΡƒΠΆΠ΅ ΠΈΠ·ΡƒΡ‡Π°Π» ООП (ΠΈ Π΄Π°ΠΆΠ΅ для Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ Π½Π΅ ΠΈΠ·ΡƒΡ‡Π°Π», Π° просто скопировал Π² свой ΠΊΠΎΠ΄ Π½Π΅ΠΊΠΈΠΉ шаблон ΠΈ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ). Но Ссли Π²Ρ‹ β€” ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, использованиС ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… конструкций, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ программирования β€” это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ красивыС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ООП Π² JavaScript. ΠœΠΎΡ‘ любимоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° β€” это TypeScript β€” опСнсорсный ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Microsoft Π² 2012 Π³ΠΎΠ΄Ρƒ. TypeScript прСдставляСт собой Π½Π΅Ρ‡Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠΉ разновидности JavaScript, которая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ООП (Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ возмоТности Π²Ρ€ΠΎΠ΄Π΅ строгой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ²).

ΠšΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ JavaScript, ΠΈ Ρ‡Ρ‚ΠΎ TypeScript β€” это, всё ΠΆΠ΅, Π½Π΅ JavaScript. И, Π½Π° самом Π΄Π΅Π»Π΅, это Ρ‚Π°ΠΊ. Но Π²ΠΎΡ‚ ΠΎΠ΄Π½Π° интСрСсная Π΄Π΅Ρ‚Π°Π»ΡŒ. Код ΠΏΠΈΡˆΡƒΡ‚ Π½Π° TypeScript, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Π΅Π³ΠΎ Π² JavaScript ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ. Π­Ρ‚ΠΎ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ всСм Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΈΠ· ΠΌΠΈΡ€ΠΎΠ² TypeScript ΠΈ JavaScript. Если Π²Ρ‹ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ TypeScript, Ρ‚ΠΎ Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ соврСмСнный язык программирования, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ смоТСтС ΠΏΠΈΡΠ°Ρ‚ΡŒ свой ΠΊΠΎΠ΄, ΠΈ Ρ‚Π° ΡˆΠΈΡ€ΠΎΡ‡Π°ΠΉΡˆΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ JavaScript.

И, Ρ‡Ρ‚ΠΎ приятнСС всСго, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ TypeScript-ΠΊΠΎΠ΄Π° Π² JavaScript производится автоматичСски. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π² сгСнСрированном ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ JavaScript-ΠΊΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, для отраТСния Π² Π½Ρ‘ΠΌ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… срСдствами TypeScript, довольно Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠ΅ конструкции, Π½ΠΎ это Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ мСняСт. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ООП, Π° Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡΡΡŒ срСдствами соврСмСнных ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ².

НС Π²Π΅Ρ€ΠΈΡ‚Π΅? Π’ΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· самых соврСмСнных ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΈΠ· TypeScript ΠΈ Electron β€” Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ JavaScript-ΠΊΠΎΠ΄ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° (хотя Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Electron ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹ΠΌΠΈ возмоТностями). Один ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ прилоТСния β€” это Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ VS Code. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‚ самый инструмСнт, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ JavaScript-ΠΊΠΎΠ΄, сам написан Π½Π° JavaScript. ΠŸΡ€Π°Π²Π΄Π°, Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½Π΅Π΅, Ρ‚ΠΎ VS Code написан Π½Π° TypeScript, Π½ΠΎ ΠΊΠΎΠ΄, написанный Π½Π° этом языкС, всё Ρ€Π°Π²Π½ΠΎ, прСобразуСтся Π² JavaScript-ΠΊΠΎΠ΄.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, изучая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ вовсС Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TypeScript, ΠΈ Π½ΠΎΠ²Ρ‹Π΅ JavaScript-программисты, Ссли Ρ€Π΅ΡˆΠ°Ρ‚ Ρ‚Π°ΠΊ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ, смогут ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠ΅, Π½Π΅ изучая ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП. Π­Ρ‚ΠΎ, Π½Π° самом Π΄Π΅Π»Π΅, вопрос Π²Ρ‹Π±ΠΎΡ€Π°. Π’ любом случаС, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ JavaScript β€” язык Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉΡΡ, ΠΈ Π² Π½Π΅Π³ΠΎ постСпСнно Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ возмоТности, ΡΠ±Π»ΠΈΠΆΠ°ΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ со всСм Ρ‚Π΅ΠΌ Ρ†Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² TypeScript.

▍3. Π’ΠΎΠΊΡ€ΡƒΠ³ ΠΏΠΎΠ»Π½ΠΎ нСкачСствСнного JavaScript-ΠΊΠΎΠ΄Π°


Π§Ρ‚ΠΎ Ρ‚ΡƒΡ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ. НСкачСствСнный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° любом языкС программирования. Π‘Π»Ρ‹ΡˆΠ°Π»ΠΈ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€ΠΎ Visual Basic?

▍4. Для JavaScript-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΡƒΠΆΠ½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ


Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌΡƒ, Ρ‡Π΅ΠΌ Π΅ΡΡ‚ΡŒ Π² языкС, Π½Π°Π±ΠΎΡ€Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй (ΠΈ Π½Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ вСлосипСды), JavaScript-программистам Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ сторонних Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π’Ρ‹Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΈΠ½Π³Ρ€Π΅Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ создании Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” это Π½Π΅ Ρ‚Π°ΠΊ просто, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд. Π Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚, Π² частности, ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструмСнты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ поставлСнныС ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ программиста Π±Ρ‹Π»Π° Π±Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΅Ρ‰Ρ‘ Π΄ΠΎΠ»Π³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ своих Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ²Π°Π»ΠΈ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ.

Π‘ Π½Π΅ΠΊΠΎΠ΅ΠΉ Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки. Однако Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ языки ΡΡ‚Ρ€Π°Π΄Π°ΡŽΡ‚ ΠΎΡ‚ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ сильно, ΠΊΠ°ΠΊ JavaScript. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‚Π°Ρ‚ΡŒ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹ΠΌ программистом Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ для всСх JavaScript-ΠΌΠΈΡ€Π΅, Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ собствСнный Π½Π°Π±ΠΎΡ€ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΡ€ΠΈ этом ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π²Ρ‹Π±ΠΎΡ€Π° Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ слоТСн ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³Ρ€Π°Π½Π΅Π½, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ Π²Π°ΠΌ, скаТСм, какая-Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΅Ρ‘ ΠΈΠ·ΡƒΡ‡ΠΈΠ² (Π° ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π΅Ρ‘ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΡƒΠΆΠ΅ потСряСт Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π° Π΅Ρ‘ мСсто ΠΏΡ€ΠΈΠ΄Ρ‘Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅, ΠΏΡ€ΠΈΡ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ β€” Π½Π° ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ΅ врСмя, всСобщий интСрСс).

Каким Π±Ρ‹ ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ всё это Π½ΠΈ Π±Ρ‹Π»ΠΎ, эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½Π° самом Π΄Π΅Π»Π΅, Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ². Если Π½Π΅ΠΊΡ‚ΠΎ ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с использованиСм JavaScript, Ρ‚ΠΎ Π΅ΠΌΡƒ Π»ΡƒΡ‡ΡˆΠ΅ всСго Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² сторонС ΠΎΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΈΠ΄Ρ‘Ρ‚ Π»ΠΈ Ρ€Π΅Ρ‡ΡŒ ΠΎ Ρ‡Ρ‘ΠΌ-Ρ‚ΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстном, Π²Ρ€ΠΎΠ΄Π΅ jQuery, Angular, React ΠΈΠ»ΠΈ Vue, ΠΈΠ»ΠΈ ΠΎ Ρ‡Ρ‘ΠΌ-Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Ρ‘Π½Π½ΠΎΠΌ Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π»ΠΎ написано это ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π² Ρ‚Ρƒ сСкунду, ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π»Π° ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° эта ΡΡ‚Π°Ρ‚ΡŒΡ. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ освоив Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, вСроятно, Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· популярных Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов. Но это β€” ΡƒΠΆΠ΅ совсСм другая история.

Π˜Ρ‚ΠΎΠ³ΠΈ


На самом Π΄Π΅Π»Π΅, Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ языка программирования β€” это вопрос, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚. Автор этого ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° подСлился здСсь лишь собствСнным ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ Π½Π° этот счёт, ΠΏΡ€ΠΈΠ²Ρ‘Π» ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π»ΠΈΠ·ΠΊΠΈ Π΅ΠΌΡƒ Π² силу Π΅Π³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ. Но, Π² любом случаС, всС программисты с Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚, ΠΈ ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ‹ слоТным Π½ΠΈ Π±Ρ‹Π» Π±Ρ‹ Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ языка, это Π²Ρ‹Π±ΠΎΡ€, всё Ρ€Π°Π²Π½ΠΎ, приходится Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! Богласны Π»ΠΈ Π²Ρ‹ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ JavaScript β€” это, Π² соврСмСнных условиях, самый Π»ΡƒΡ‡ΡˆΠΈΠΉ язык для обучСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ? Если Π½Π΅ согласны β€” Ρ‚ΠΎΠ³Π΄Π°, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ для этой Ρ†Π΅Π»ΠΈ?

НСдостатки javascript / ΠŸΠ΅ΡΠΎΡ‡Π½ΠΈΡ†Π° / Π₯Π°Π±Ρ€

Javascript ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ язык, Π² Π½Π΅ΠΌ Π·Π°Π»ΠΎΠΆΠ΅Π½ большой ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π». ΠŸΡ€ΠΈ Π±ΡƒΡ€Π½ΠΎ растущих Π²Π΅Π±-тСхнологиях ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π»ΠΈΠ΄Π΅Ρ€ΠΎΠ² срСди языков программирования. Π‘Ρ€Π΅Π΄Π° исполнСния javascript ΠΊΠΎΠ΄Π° присутствуСт Π² любом ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ², Π΄Π° ΠΈ сСрвСрноС ПО ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° этом Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ языкС.

Но язык Π½Π΅ лишСн нСдостатков. НаиболСС Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Π΅ ΠΈΠ· Π½ΠΈΡ…:

  1. Π―Π·Ρ‹ΠΊ компилируСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ исполнСния ΠΊΠΎΠ΄Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ сайт, javascript ΠΊΠΎΠ΄ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ увСличиваСтся врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
  2. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΠ΅Ρ‚ типизация Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° всСх скриптовых языков. Пока Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π΅ Π΄ΠΎΠΉΠ΄Π΅Ρ‚ Π΄ΠΎ Π½ΡƒΠΆΠ½ΠΎΠΉ строчки, Π½Π΅ ΡƒΠ·Π½Π°Π΅ΡˆΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½Π°. А вСдь Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎ поиску ошибок ΠΌΠΎΠ³ Π±Ρ‹ Π²Π·ΡΡ‚ΡŒ Π½Π° сСбя компилятор, Ссли Π±Ρ‹ Π·Π½Π°Π» Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π”Π° ΠΈ ΠΏΠΎ скорости выполнСния, Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ быстрСС.
  3. НС привычная для ΠΌΠ½ΠΎΠ³ΠΈΡ… программистов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль. ΠšΠ»Π°ΡΡΡ‹ ΠΈ наслСдованиС классов присутствуСт, Π½ΠΎ ΠΎΠ½ΠΎ сильно отличаСтся ΠΎΡ‚ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Π² языках программирования C++/C#/Java.

Π§Π΅ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Π΅Π΅ ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ становится софт, Ρ‚Π΅ΠΌ сильнСС Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‰ΡƒΡ‰Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ ΠΊΠΎΠ΄Π° ΠΈ с Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

КакиС Π΅ΡΡ‚ΡŒ ΠΏΡƒΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ? ΠžΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ использолвания javascript? Google, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π»Π° Π·Π°ΠΌΠ΅Π½Ρƒ β€” язык google dart. А ΠΊΠ°ΠΊ Π±Ρ‹Ρ‚ΡŒ с ΡƒΠΆΠ΅ написанным ΠΊΠΎΠ΄ΠΎΠΌ? Π“ΠΎΠ΄Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°ΡˆΠΈΡ… Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… программистов?

НС всС Ρ‚Π°ΠΊ ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ.

  1. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ с Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΉ позволяСт Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ПО ΠΎΡ‚ google β€” closure compiler. НСобходимо Π² ΠΊΠΎΠ΄Π΅ рядом с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, функциями ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ β€” Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. И ΡƒΠΌΠ½ΠΎΠ΅ ПО ΠΎΡ‚ google подскаТСт Π²Π°ΠΌ, Π³Π΄Π΅ Π²Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ»ΠΈ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

    ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ докумСнтация: developers.google.com/closure/compiler/docs/js-for-compiler?hl=ru

  2. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ нСльзя. Но ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ объСм ΠΊΠΎΠ΄Π°, сТав Π΅Π³ΠΎ ΠΊΠ°ΠΊ логичСски (ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΡƒΠ±Ρ€Π°Π² лишниС ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π² ΠΊΠΎΠ΄ ΠΈ Ρ‚.Π΄.), Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сТатия (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, gzip). Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ Π΅ΡΡ‚ΡŒ простор для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ². Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ с сайта, ΠΈ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ. И ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ запускС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΆΠ΅Π»Π΅Π·Π° Ρ‚ΠΎΠΆΠ΅ Π½Π΅ отстаСт, сСйчас ΡƒΠΆΠ΅ Π΄Π°ΠΆΠ΅ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡƒΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΡΡ‚Π΅Π½ΡŒΠΊΠΎΠΌΡƒ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ.
  3. Π˜Π·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ «корявой» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ позволяСт сам язык javascript. Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ инструмСнты:

    Mootools: mootools.net
    AWeb library: a-web.me

    ОписаниС классов внСшнС приблиТаСтся ΠΊ описанию классов Π½Π° языкС C++/C#/Java. Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠ°ΠΊ для понимания, Ρ‚Π°ΠΊ ΠΈ для сопровоТдСния ΠΊΠΎΠ΄Π°. Π’Ρ‚ΠΎΡ€ΠΎΠΉ инструмСнт привносит ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Π΅ public, protected ΠΈ private ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, добавляСт ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Π΅ свойства классов. ВсС просто ΠΈ изящно.

ВсС нСдостатки языка javascript устранимы. Π•Π³ΠΎ смСло ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. Π—Π°ΠΌΠ΅Π½Π° языку ΠΏΠΎΠΊΠ° Π½Π΅ Π½ΡƒΠΆΠ½Π°.

Когда JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ / Π₯Π°Π±Ρ€


Π€ΠΎΡ‚ΠΎΒ β€” Maria Teneva, ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΊΠ° Unsplash

Иногда React, Angular, Vue.js ΠΈ Ρ‚. Π΄. β€” это лишнСС

ΠŸΡ€Π°Π²Π΄Π° Π»ΠΈ, Ρ‡Ρ‚ΠΎ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² слишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Π²Ρ‹Π±ΠΎΡ€ становится чСрСсчур слоТным? Или, ΠΌΠΎΠΆΠ΅Ρ‚, ΠΌΡ‹ просто Π·Π°Π±Ρ‹Π»ΠΈ ΠΎ сообраТСниях ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π·Π° лишний Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π² ΠΈΡ‚ΠΎΠ³Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ?

ВСрнСмся Π² эпоху jQuery


ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Π±Ρ‹Π»ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° JQuery использовали для всСго! JQuery Ρ‚ΠΎ, jQuery сё — ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ Π»Π΅Π³ΠΊΠΈΠΉ Π°Ρ€ΠΎΠΌΠ°Ρ‚ jQuery. На любом Π²Π΅Π±-сайтС ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΒ β€” jQuery.

Π’ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° популярности этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ?

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ JavaScript казался слишком слоТным Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ. К Ρ‚ΠΎΠΌΡƒ, ΠΆΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ Π±Ρ‹Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ.

Но ΠΏΡ€ΠΈΡˆΠ»ΠΎ спасСниС β€” Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° jQuery ΠΈΠ·Π±Π°Π²ΠΈΠ»Π° сообщСство JavaScript ΠΎΡ‚ этой Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ. ΠŸΡ€Π°Π²Π΄Π°, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· нас Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ стали Π»Π΅Π½ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ пСрСстали ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌΒ».

Π― ΠΏΡ€ΠΎΠ·Ρ€Π΅Π», ΠΊΠΎΠ³Π΄Π° появился этот сайт.

Π­ΠΏΠΎΡ…Π° Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎ большого Π²Ρ‹Π±ΠΎΡ€Π° Π² ΠΌΠΈΡ€Π΅ JavaScript


НачинаСтся 2020Β Π³ΠΎΠ΄, ΠΈ Ρƒ Π½Π°ΡˆΠΈΡ… сайтов ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π΅ΡΡ‚ΡŒ «лишний вСс». К нашим услугам Angular, React, Vue.js, Svelte, Polymer (ΠΈ это Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всё)Β β€” Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ постоянно Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ Π² ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅ΠΌΡΡ Π·ΠΎΠΎΠΏΠ°Ρ€ΠΊΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² утомляСт.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ: Β«Π“ΠΎΠ²ΠΎΡ€ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ Π·Π° сСбя». Но ΠΈΠΌΠ΅Π½Π½ΠΎ это я сСйчас ΠΈ дСлаю: я критичСски ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Β«ΡƒΡΡ‚Π°Π»ΠΎΡΡ‚ΡŒΒ» ΠΎΡ‚ изобилия Π² ΠΌΠΈΡ€Π΅ JavaScript.

Π‘ΠΊΠ°ΠΆΠ΅ΠΌ чСстно: Π½ΠΈΠΊΠΎΠ³Π΄Π° Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊ просто ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π΅Π±-сайт ΠΈΠ»ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. БСгодня достаточно ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: ng new Π˜ΠΌΡΠŸΡ€ΠΎΠ΅ΠΊΡ‚Π°
Π² Angular, … Π² случаС React ΠΈΒ Ρ‚.Β Π΄.

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚. Однако ΠΏΡ€ΠΈ этом Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ количСство JavaScript-ΠΊΠΎΠ΄Π° ΠΈ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ загруТаСтся Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ β€” Π° Π²Π΄Ρ€ΡƒΠ³ сочСтания HTML, CSS ΠΈ JavaScript окаТСтся достаточно?

И говоря ΠΎ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ…, я имСю Π² Π²ΠΈΠ΄Ρƒ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ JavaScript: Angular, React, Vue.js ΠΈ SvelteΒ β€” всё это вмСстС (ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅).

ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы использования JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ²


Π’ использовании JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π΅ΡΡ‚ΡŒ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы. И Ρ€Π΅Ρ‡ΡŒ здСсь Π½Π΅ ΠΎ ΠΏΠ»ΠΎΡ…ΠΈΡ… ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ…, Π° ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π² ΠΊΠ°ΠΊΠΈΡ… ситуациях ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ сСбя Π»ΡƒΡ‡ΡˆΠ΅.

На основной Ρ€Π°Π±ΠΎΡ‚Π΅ я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ Angular, Π½ΠΎ люблю ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с React ΠΈ Vue.js, Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΊΠ°ΠΊΡƒΡŽ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΌΠΈΠΊΡ€ΠΎΠ±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ JavaScript, которая Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ, Π½ΠΎ Π·Π°Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Когда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ


Π•ΡΡ‚ΡŒ нСсколько ситуаций, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вмСсто JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΈΠΊΡ€ΠΎΠ±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈΠ»ΠΈ простой JavaScript.
  1. Π’Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Β β€” простоС ΠΈΠ»ΠΈ малСнькоС. НапримСр, Ρƒ вас нСбольшой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π²Ρ€ΠΎΠ΄Π΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ экспСримСнта с Π½ΠΎΠ²Ρ‹ΠΌ JavaScript API.
  2. ВысокиС трСбования ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈΒ β€” Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ ΠΏΠ»ΠΎΡ…ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ.

Если Π² счСт ΠΈΠ΄Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎ сСти Π±Π°ΠΉΡ‚, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ большой Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ β€” Π½Π΅ самоС Ρ€Π°Π·ΡƒΠΌΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: Π·Π° удобство JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° приходится ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ излишним количСством ΠΊΠΎΠ΄Π°.

Π•ΡΡ‚ΡŒ мноТСство инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π² Ρ‚Π°ΠΊΠΈΡ… ситуациях. Но Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Ρ‡Π΅ΠΌ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π΅Π΅.

Когда JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ β€” это Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€


Часто использованиС JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ обосновано β€” Π½ΠΎ Π΄Π°ΠΆΠ΅ Π² этих случаях нСльзя Ρ‚Π΅Ρ€ΡΡ‚ΡŒ Π±Π΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

1. Π£ вас большоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅


Если Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ большоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, использованиС JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ, вСдь Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° со стороны сообщСства.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ справочных ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ прилоТСния.

2. Π’Ρ‹ (ΠΈΠ»ΠΈ компания) Ρ†Π΅Π½ΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ исходный ΠΊΠΎΠ΄


Π‘Π°ΠΌΠΎΠ΅ Π»ΡƒΡ‡ΡˆΠ΅Π΅ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄Π΅ β€” Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ свободно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ (Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π»ΠΈΡ†Π΅Π½Π·ΠΈΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ).

МногиС элСмСнты Ρ‚Π°ΠΊΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² свободноС ΠΎΡ‚ основной Ρ€Π°Π±ΠΎΡ‚Ρ‹ врСмя β€” поэтому Π·Π° Π΅Π³ΠΎ использованиС Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

А Ссли захочСтся внСсти Π²ΠΊΠ»Π°Π΄ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, это принСсСт ΠΏΠΎΠ»ΡŒΠ·Ρƒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

3. Быстрая Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ


Π£ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π΅ΡΡ‚ΡŒ мноТСство инструмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ быстрСС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π΅Ρ‚ΡŒΡΡ Π½Π° ΠΎΠΏΡ‹Ρ‚ Π·Π½Π°ΡŽΡ‰ΠΈΡ… своС Π΄Π΅Π»ΠΎ спСциалистов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вмСсто Π½Π΅Π³ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π½ΡŒΠΊΠΎ протСстировали ΠΊΠΎΠ΄.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅


Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ прСимущСств использования JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² оказалось большС, Ρ‡Π΅ΠΌ нСдостатков. (Если Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ β€” ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Π² коммСнтариях!)

Но Π΄Π°ΠΆΠ΅ Ссли использованиС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π·Π²ΡƒΡ‡ΠΈΡ‚ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΡƒΠΆΠ½ΠΎ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π½Π° свои Π²Π΅Π±-сайты ΠΈ Π² Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ прилоТСния.

ВсСгда Π·Π°Π΄Π°Π²Π°ΠΉΡ‚Π΅ΡΡŒ вопросом: «НуТСн Π»ΠΈ здСсь этот Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ? ΠœΠΎΠΆΠ΅Ρ‚, Π»ΡƒΡ‡ΡˆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ всё своими Ρ€ΡƒΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅?Β»

«Как ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° отразится Π½Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΡ…? Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π² использовании, ΠΊΠ°ΠΊ Π½Π° флагманском устройствС?Β»

ΠŸΠΎΡ‡Π΅ΠΌΡƒ JavaScript Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС, Ρ‡Π΅ΠΌ Π‘++? / Π₯Π°Π±Ρ€

Π”Π°, Π²Ρ‹ Π½Π΅ ΠΎΡΠ»Ρ‹ΡˆΠ°Π»ΠΈΡΡŒ. Π“Π»ΡŽΡ‡Π½Ρ‹ΠΉ, Ρ‚ΡƒΠΏΠΎΠΉ, Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π½ΡƒΡ‚Ρ‹ΠΉ JavaScript Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС, Ρ‡Π΅ΠΌ Π‘++. ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ Ρ‚ΡΠ½ΡƒΡ‚ΡŒΡΡ ΠΊ return userKarmaVote(), Π΄Π°ΠΉΡ‚Π΅ ΠΌΠ½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ всё ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ. Адвокат!

Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° Π»ΠΆΠΈ


Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Benchmarks Game. РСбята написали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (ΠΎΠ±Ρ…ΠΎΠ΄ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π², n-body ΠΈ Ρ‚.Π΄.) Π½Π° всСх популярных языках программирования ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΡƒ измСрСния скорости ΠΈ потрСблСния памяти. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ дальшС, ΠΏΡ€ΠΎΡΡŒΠ±Π° ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ.
РСализация ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описана (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, nbody). Π­Ρ‚ΠΎ open-source ΠΈ Ссли Π²Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π΅ самым ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ способом, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ собствСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Из всСх ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языков JavaScipt Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС Π΄Ρ€ΡƒΠ³ΠΈΡ…. Он Π² ΠΏΡΡ‚ΡŒ Ρ€Π°Π· быстрСС, Ρ‡Π΅ΠΌ Python ΠΈ Ruby (Π² Ρ‚ΠΎΠΌ числС JRuby).

На сСгодняшний дСнь JavaScript β€” это самый быстрый ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык Π² ΠΌΠΈΡ€Π΅.
Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ C++. По Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ regexdna JavaScipt ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‡ΡƒΡ‚ΡŒ быстрСС, Ρ‡Π΅ΠΌ C++. ΠŸΡ€ΠΈ этом Π½Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ CPU Π² Π΄Π²Π° Ρ€Π°Π·Π° мСньшС, хотя ΠΈ потрСбляСт Π² Π΄Π²Π° Ρ€Π°Π·Π° большС памяти.
По Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ JavaScript, СстСствСнно, ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ C++, Π½ΠΎ учитывая Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСсовых катСгориях (ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ язык со статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка с динамичСской), Ρ€Π°Π·Π½ΠΈΡ†Π° Π½Π΅ такая ΡƒΠΆ большая.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ JavaScript Ρ‚Π°ΠΊΠΎΠΉ быстрый?


Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ для Python/Ruby Π±Ρ‹Π»ΠΈ написаны ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ числом людСй. Π­Ρ‚ΠΈ люди, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±Π΅Π·ΡƒΠΌΠ½ΠΎ Ρ‚Π°Π»Π°Π½Ρ‚Π»ΠΈΠ²Ρ‹, Π½ΠΎ Π½Π° стадии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρƒ Π½ΠΈΡ… Π½Π΅ Π±Ρ‹Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠΈ. Они ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с собой, со своими прСдставлСниями ΠΎ скорости ΠΈ качСствС. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΆΠ΅ для JS родился Π² ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΠΉ Π±ΠΎΡ€ΡŒΠ±Π΅ Π»ΡƒΡ‡ΡˆΠΈΡ… ΡƒΠΌΠΎΠ² ΠΌΠΈΡ€Π°. Mozilla Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° SpiderMonkey, Google Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» V8, Microsoft ΠΎΡ‚ΠΊΡ€Ρ‹Π»ΠΈ Chakra. ВсС ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π² ΠΆΠ΅ΡΡ‚ΠΎΡ‡Π°ΠΉΡˆΠ΅ΠΉ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½ΠΎΠΉ Π±ΠΎΡ€ΡŒΠ±Π΅.

Когда Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ NodeJS встал вопрос ΠΎ Π²Ρ‹Π±ΠΎΡ€Π΅ Π΄Π²ΠΈΠΆΠΊΠ° для JS, ΠΎΠ½ΠΈ просто посмотрСли Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΈ, ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ Ρ‡Ρ‚ΠΎ V8 Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС ΠΈ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ Π΅Π³ΠΎ. Если Π·Π°Π²Ρ‚Ρ€Π° Chakra ΠΎΡ‚ Microsoft Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстрСС Google V8, Ρ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π½Π΅Π³ΠΎ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ JavaScript Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ?


Как Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, JavaScript ΠΊΠ°ΠΊ язык β€” быстрый. Однако считаСтся, Ρ‡Ρ‚ΠΎ Β«Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅Β» ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ JS β€” манипуляции с DOM. На самом Π΄Π΅Π»Π΅ это ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Π½Π΅ Ρ‚Π°ΠΊ ΠΈ JS ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° сСрвСрС, Π² ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах ΠΈ Π΄Π°ΠΆΠ΅ Π² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ…. Но Ρ€Π΅Ρ‡ΡŒ Π½Π΅ ΠΎΠ± этом. Π Π΅Ρ‡ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с DOM, Ρ‚ΠΎ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ Π½Π΅ JS, Π° DOM. Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΏΠΎΡ‡Π΅ΠΌΡƒ DOM Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ, Π½ΠΎ я позволю сСбС ΡΡƒΠ·ΠΈΡ‚ΡŒ фокус Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² самой спСцификации HTML. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ 1.1.1 The DOM Structure Model Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π°Π±Π·Π°Ρ†:
…objects in the DOM are live; that is, changes to the underlying document structure are reflected in all relevant NodeList and NamedNodeMap objects…

Бмысл Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π΄Π΅Ρ€Π΅Π²Π΅ DOM β€” Β«ΠΆΠΈΠ²Ρ‹Π΅Β». Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ любом ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ любой части DOM эти измСнСния ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ DOM.
ΠšΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Flipboard, ΡƒΠΏΠΎΡ€Π½ΠΎ Π±ΠΎΡ€ΠΎΠ»ΠΈΡΡŒ с Π»Π°Π³Π°ΠΌΠΈ DOM. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Ρƒ Π½ΠΈΡ… Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΈ ΠΎΠ½ΠΈ смогли Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ 60 FPS Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΠ² DOM Π½Π° Canvas. JavaScript Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ дСлся, Π° Π»Π°Π³ΠΈ ΠΏΡ€ΠΎΠΏΠ°Π»ΠΈ. По этой ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Netflix ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ ΠΎΡ‚ DOM Π½Π° своих TV-приставках, Π° Π Π΅Π°ΠΊΡ‚Ρƒ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ свой Β«Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ DOMΒ».

Π•Ρ‰Π΅ Ρ€Π°Π·: JavaScript Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π΅ Π½Π΅ Π»Π°Π³Π°Π΅Ρ‚. Π›Π°Π³Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ DOM (Ρ‚ΠΎΡ‡Π½Π΅Π΅ манипуляции с DOM). НС Π²Π°ΠΆΠ½ΠΎ Ρ‡Π΅ΠΌ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ DOM β€” Π΄ΠΆΠ°Π²Π°-скриптом ΠΈΠ»ΠΈ ассСмблСром. DOM всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡ‚ΠΎΡ€ΠΌΠ°ΠΆΠΈΠ²Π°Ρ‚ΡŒ. ИмСнно ΠΈΠ·-Π·Π° тормознутости DOM, JavaScript стал ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌ языком. Π­Ρ‚ΠΎ историчСская Π½Π΅ΡΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²ΠΎΡΡ‚ΡŒ ΠΈ ΠΎΡ‚ Π½Π΅Π΅ Π΄Π°Π²Π½ΠΎ ΠΏΠΎΡ€Π° ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ.

WebAssembly


Π’ этой связи Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½Ρ‹Π΅ оТидания ΠΎΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° WebAssembly. Π”Π΅ΡΠΊΠ°Ρ‚ΡŒ, ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ WebAssembly порядок Π½Π°Π²Π΅Π΄Π΅Ρ‚ ΠΈ ΠΌΡ‹ Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ откаТСмся ΠΎΡ‚ Β«Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π½ΡƒΡ‚ΠΎΠ³ΠΎΒ» JS. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π΄Π°ΠΆΠ΅ послС ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° WebAssembly Ρ€Π°Π±ΠΎΡ‚Π° с DOM останСтся Π·Π° JavaScript. Π”Π°, ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ (Ρ‚ΠΈΠΏΠ° AngularJS) ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСнСсти Ρ‚ΡΠΆΠ΅Π»ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π° C/C++, Π½ΠΎ суммарный прирост ΠΎΡ‚ этого Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° WebAssembly смоТСт Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ DOM’ΠΎΠΌ, минуя JS, прироста ΠΏΠΎ скорости Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚.ΠΊ. Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ DOM, Π° Π½Π΅ JS.

Π₯Π΅ΠΉΡ‚


Π― понимаю, Ρ‡Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ β€” Π½Π΅ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ языка. НуТно ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти, Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° CPU ΠΈ Ρ‚.Π΄. Π― понимаю, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ Π΄Π΅Π»ΠΎ β€” ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ акадСмичСских Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π΄Π΅Π»ΠΎ β€” ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ настоящСго ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-прилоТСния. Π― понимаю, Ρ‡Ρ‚ΠΎ ΠΊΡ€ΠΎΠΌΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, ΠΈ Ρ‡Ρ‚ΠΎ ваш асинхронный ASP.NET ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ быстрСС асинхронного NodeJS.

Однако JavaScript ΡƒΠΆΠ΅ достаточно подвСргся Π½Π°ΠΏΠ°Π΄ΠΊΠ°ΠΌ (заслуТСнным ΠΈ нСзаслуТСнным) Π·Π° своС «странноС» ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π·Π° своС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Ρ‚ΠΈΠΏΠ°ΠΌ, ΠΊ наслСдованию ΠΈ Ρ‚.Π΄. Но Π²Π΅ΡˆΠ°Ρ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ Π΅Ρ‰Π΅ ΠΈ ярлык тормознутости β€” это ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ!

НуТны Π»ΠΈ JavaScript Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ: прСимущСства ΠΈ нСдостатки

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

ΠžΡ‚ Π°Π²Ρ‚ΠΎΡ€Π°: ΠΊΠ°ΠΊ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, я ΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ рСгулярно ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ свой инструмСнтарий ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, ΠΌΠΎΠ³Ρƒ Π»ΠΈ я ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ инструмСнта. НСдавно я исслСдовал, насколько Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ слоТныС прилоТСния Π±Π΅Π· front-end Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° JavaScript.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ?

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ β€” это инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ соврСмСнных Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, особСнно SPA.

Π’ своС врСмя Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ Π»ΠΎΠ³ΠΈΠΊΡƒ интСрфСйса, полагаясь Π² основном Π½Π° vanilla JS ΠΈ jQuery. Но ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ прилоТСния ΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ всС Π±ΠΎΠ»Π΅Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТными, инструмСнты для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ стали Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ Π½Π° сСгодняшний дСнь Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ нСсколько основных ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… срСд / Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΎΡ‚ Vue Π΄ΠΎ React, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ:

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

БСсплатный курс Β«NodeJS. Быстрый старт»

Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ курс ΠΈ ΡƒΠ·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с нуля Π½Π° JavaScript с NodeJS

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ курс

Бинхронизация состояния ΠΈ прСдставлСния

ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ

БистСма шаблонов

ΠœΠ½ΠΎΠ³ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ всС Π΅Ρ‰Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹?

Π­Ρ‚ΠΎ зависит ΠΎΡ‚. МногиС ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ front-end Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»ΠΈ Π½ΡƒΠΆΠ½Ρ‹. Π”Ρ€ΡƒΠ³ΠΈΠ΅ β€” Ρ‡Ρ‚ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ инструмСнты. Π˜Ρ‚Π°ΠΊ, вопрос Π² Ρ‚ΠΎΠΌ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ jQuery сСгодняшнСго дня? Π‘ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ ΠΎΠ½ΠΈ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹?

Π’Ρ€ΡƒΠ΄Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π½ΠΎ прогрСсс Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ JS, спСцификации Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ Π»Π΅Π³ΠΊΠΎ настраиваСмыС инструмСнты сборки сдСлали Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ SPA Π±Π΅Π· Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° простой, ΠΊΠ°ΠΊ Π½ΠΈΠΊΠΎΠ³Π΄Π° Ρ€Π°Π½Π΅Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ это Π³Π»ΡƒΠ±ΠΆΠ΅, я Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» одностраничноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ стандартный JavaScript, Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ Parcel. Π’ процСссС Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ нСсколько слоТностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π»ΠΈ ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ стороны JS.

Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, ΠΊΠΎΠ³Π΄Π° я ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π» эти прСпятствия, я Π±Ρ‹Π» ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ Ρ‚Π΅ΠΌ, насколько просто ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ одностраничноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с использованиСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ vanilla JS.

ΠžΠ±Π·ΠΎΡ€

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ просто. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ² с основными возмоТностями CRUD. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠ΅ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ список Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ².

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

Π“Π»Π°Π²Π½Ρ‹ΠΉ экран

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

Π­ΠΊΡ€Π°Π½ создания Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π°

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Ρ‚Π°ΠΊΠΆΠ΅ просто. Π’Ρ‹ создаСтС класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ HTMLElement (ΠΈΠ»ΠΈ HTMLParagraphElement ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ этот класс для опрСдСлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ элСмСнта.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ…ΡƒΠΊΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ connectedCallback, disconnectedCallback, attributeChangedCallback.

import template from ‘./recipe.html’ import DATA_SERVICE from ‘../../utils/data’ export default class Recipe extends HTMLElement { constructor () { // ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌ shadow DOM, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Ρ€ΡƒΠ΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ свойство recipe ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ сСрвис Π΄Π°Π½Π½Ρ‹Ρ… super() this._shadowRoot = this.attachShadow({ mode: ‘open’ }) this._recipe = null this.ds = new DATA_SERVICE() } connectedCallback () { // устанавливаСм html-ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ для ΠΈΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ шаблона this._shadowRoot.innerHTML = template // ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ delete для удалСния ΠΊΠ½ΠΎΠΏΠΊΠΈ this._shadowRoot .querySelector(‘.delete’) .addEventListener(‘click’, () => this._delete()) } _render (title) { // устанавливаСм Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π° ΠΈ тСкст ΠΊΠ½ΠΎΠΏΠΊΠΈ «Π² ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠ΅» this._shadowRoot.querySelector(‘.recipe-title’).innerHTML = title this._shadowRoot.querySelector(‘.favorite’).innerHTML = this._recipe .favorite ? ‘Unfavorite’ : ‘Favorite’ } _delete () { // УдаляСм Ρ€Π΅Ρ†Π΅ΠΏΡ‚ ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ try { await this.ds.deleteRecipe(this._recipe.id) } catch (e) { console.error(e) alert( ‘Sorry, there was a problem deleting the recipe. Please, try again.’ ) } } get recipe () { // Π³Π΅Ρ‚Ρ‚Π΅Ρ€ для Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ² return this._recipe } set recipe (recipe = {}) { // сСттСр для Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΌΠ΅Ρ‚ΠΎΠ΄ render this._recipe = recipe this._render(this._recipe.title) } } window.customElements.define(‘recipe-item’, Recipe)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

import template from ‘./recipe.html’

import DATA_SERVICE from ‘../../utils/data’

export default class Recipe extends HTMLElement {

Β Β constructor () {

Β Β Β Β // ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌ shadow DOM, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Ρ€ΡƒΠ΅ΠΌ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ свойство recipe ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ сСрвис Π΄Π°Π½Π½Ρ‹Ρ…

Β Β Β Β super()

Β Β Β Β this._shadowRoot = this.attachShadow({ mode: ‘open’ })

Β Β Β Β this._recipe = null

Β Β Β Β this.ds = new DATA_SERVICE()

Β Β }

Β Β connectedCallback () {

Β Β Β Β // устанавливаСм html-ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ для ΠΈΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ шаблона

Β Β Β Β this._shadowRoot.innerHTML = template

Β Β Β Β // ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ delete для удалСния ΠΊΠ½ΠΎΠΏΠΊΠΈ

Β Β Β Β this._shadowRoot

Β Β Β Β Β Β .querySelector(‘.delete’)

Β Β Β Β Β Β .addEventListener(‘click’, () => this._delete())

Β Β }

Β Β _render (title) {

Β Β Β Β // устанавливаСм Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π°Β Β ΠΈ тСкст ΠΊΠ½ΠΎΠΏΠΊΠΈ «Π² ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠ΅»

Β Β Β Β this._shadowRoot.querySelector(‘.recipe-title’).innerHTML = title

Β Β Β Β this._shadowRoot.querySelector(‘.favorite’).innerHTML = this._recipe

Β Β Β Β Β Β .favorite

Β Β Β Β Β Β ? ‘Unfavorite’

Β Β Β Β Β Β : ‘Favorite’

Β Β }

Β Β _delete () {

Β Β Β Β // УдаляСм Ρ€Π΅Ρ†Π΅ΠΏΡ‚ ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ

Β Β Β Β try {

Β Β Β Β Β Β await this.ds.deleteRecipe(this._recipe.id)

Β Β Β Β } catch (e) {

Β Β Β Β Β Β console.error(e)

Β Β Β Β Β Β alert(

Β Β Β Β Β Β Β Β ‘Sorry, there was a problem deleting the recipe. Please, try again.’

Β Β Β Β Β Β )

Β Β Β Β }

Β Β }

Β Β get recipe () {

Β Β Β Β // Π³Π΅Ρ‚Ρ‚Π΅Ρ€ для Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ²

Β Β Β Β return this._recipe

Β Β }

Β Β set recipe (recipe = {}) {

Β Β Β Β // сСттСр для Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСт ΠΌΠ΅Ρ‚ΠΎΠ΄ render

Β Β Β Β this._recipe = recipe

Β Β Β Β this._render(this._recipe.title)

Β Β }

}

window.customElements.define(‘recipe-item’, Recipe)

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ My Recipe Item для отобраТСния Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ² Π² спискС

ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ

ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ для прилоТСния Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ довольно проста. Учитывая событиС Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ, я установил для содСрТимого прилоТСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ я использовал npm-ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Vanilla JS Router. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ API истории Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ ΠΈ слоТно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнный ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅ΠΌ Π² 100 строках ΠΊΠΎΠ΄Π°! ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: я Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ, Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ Π³Π°Ρ€Π΄ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°.

import ‘./components/error/error’ import content404 from ‘./components/404/404.html’ import DATA_SERVICE from ‘./utils/data’ const ds = new DATA_SERVICE() // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ элСмСнт, содСрТащий SP const $el = document.getElementById(‘app’) // опрСдСляСм ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ const home = async () => { await import(‘./components/recipe/recipe’) await import(‘./components/recipe-list/recipe-list’) await import(‘./components/modal/modal.js’) $el.innerHTML = `<recipe-list></recipe-list>` } const create = async () => { await import(‘./components/create-recipe/create-recipe’) $el.innerHTML = `<create-recipe></create-recipe>` } const edit = async () => { await import(‘./components/edit-recipe/edit-recipe’) $el.innerHTML = `<edit-recipe></edit-recipe>` } const error404 = async () => { $el.innerHTML = content404 } // сопоставляСм ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ с путями // Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ id для ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° рСдактирования const routes = { ‘/’: home, ‘/create’: create, ‘/error’: error404, ‘/edit’: async function (params) { const id = params.get(‘id’) const recipe = await ds.getRecipe(id) await edit() $el.querySelector(‘edit-recipe’).recipe = recipe } } // для состояния pop ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ· url ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ // Ссли Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π½Π΅Ρ‚, ошибка window.onpopstate = async () => { const url = new URL( window.location.pathname + window.location.search, window.location.origin ) if (routes[window.location.pathname]) { await routes[window.location.pathname](url.searchParams) } else routes[‘/error’]() } // для состояния pop ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ· url ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ // Ссли Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π½Π΅Ρ‚, ошибка // добавляСм ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ Π² ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° let onNavItemClick = async pathName => { const url = new URL(pathName, window.location.origin) const params = url.searchParams if (routes[url.pathname]) { window.history.pushState({}, pathName, window.location.origin + pathName) await routes[url.pathname](params) } else { window.history.pushState({}, ‘404’, window.location.origin + ‘/404’) routes[‘/error’]() } } // устанавливаСм ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ / ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы ;(async () => { const url = new URL( window.location.pathname + window.location.search, window.location.origin ) if (routes[window.location.pathname]) { await routes[window.location.pathname](url.searchParams) } else routes[‘/error’]() })() // экспортируСм ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠ»ΠΈΠΊΠ° nav const router = { onNavItemClick, routes } export { router }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

import ‘./components/error/error’

import content404 from ‘./components/404/404.html’

import DATA_SERVICE from ‘./utils/data’

const ds = new DATA_SERVICE()

// ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ элСмСнт, содСрТащий SP

const $el = document.getElementById(‘app’)

// опрСдСляСм ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹

const home = async () => {

Β Β await import(‘./components/recipe/recipe’)

Β Β await import(‘./components/recipe-list/recipe-list’)

Β Β await import(‘./components/modal/modal.js’)

Β Β $el.innerHTML = `<recipe-list></recipe-list>`

}

const create = async () => {

Β Β await import(‘./components/create-recipe/create-recipe’)

Β Β $el.innerHTML = `<create-recipe></create-recipe>`

}

const edit = async () => {

Β Β await import(‘./components/edit-recipe/edit-recipe’)

Β Β $el.innerHTML = `<edit-recipe></edit-recipe>`

}

const error404 = async () => {

Β Β $el.innerHTML = content404

}

// сопоставляСм ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρ‹ с путями

// Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ id для ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° рСдактирования

const routes = {

Β Β ‘/’: home,

Β Β ‘/create’: create,

Β Β ‘/error’: error404,

Β Β ‘/edit’: async function (params) {

Β Β Β Β const id = params.get(‘id’)

Β Β Β Β const recipe = await ds.getRecipe(id)

Β Β Β Β await edit()

Β Β Β Β $el.querySelector(‘edit-recipe’).recipe = recipe

Β Β }

}

// для состояния pop ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ· url ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚

// Ссли Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π½Π΅Ρ‚, ошибка

window.onpopstate = async () => {

Β Β const url = new URL(

Β Β Β Β window.location.pathname + window.location.search,

Β Β Β Β window.location.origin

Β Β )

Β Β if (routes[window.location.pathname]) {

Β Β Β Β await routes[window.location.pathname](url.searchParams)

Β Β } else routes[‘/error’]()

}

// для состояния pop ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ· url ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚

// Ссли Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π½Π΅Ρ‚, ошибка

// добавляСм ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ Π² ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°

let onNavItemClick = async pathName => {

Β Β const url = new URL(pathName, window.location.origin)

Β Β const params = url.searchParams

Β Β if (routes[url.pathname]) {

Β Β Β Β window.history.pushState({}, pathName, window.location.origin + pathName)

Β Β Β Β await routes[url.pathname](params)

Β Β } else {

Β Β Β Β window.history.pushState({}, ‘404’, window.location.origin + ‘/404’)

Β Β Β Β routes[‘/error’]()

Β Β }

}

// устанавливаСм ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ / ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы

;(async () => {

Β Β const url = new URL(

Β Β Β Β window.location.pathname + window.location.search,

Β Β Β Β window.location.origin

Β Β )

Β Β if (routes[window.location.pathname]) {

Β Β Β Β await routes[window.location.pathname](url.searchParams)

Β Β } else routes[‘/error’]()

})()

// экспортируСм ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠ»ΠΈΠΊΠ° nav

const router = {

Β Β onNavItemClick,

Β Β routes

}

export { router }

Π― Ρ…ΠΎΡ‡Ρƒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π² Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ…. Π’ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… я ΠΌΠΎΠ³Ρƒ привСсти Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ объяснСния. Π― Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» нСсколько Π·Π°Π±Π°Π²Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ бСсконСчная ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠ°, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅!

ΠŸΠ΅Ρ€Π΅ΠΎΡΠΌΡ‹ΡΠ»Π΅Π½ΠΈΠ΅

ПослС создания прилоТСния ΠΌΠ½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΎΡΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ΠΏΠ»ΡŽΡΠ°Ρ… ΠΈ минусах всСго процСсса ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°. Начну с ΠΏΠ»ΠΎΡ…ΠΈΡ… новостСй.

ΠœΠΈΠ½ΡƒΡΡ‹

БпСцификация всС Π΅Ρ‰Π΅ развиваСтся

БпСцификация Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² являСтся ΠΈ старой, ΠΈ Π½ΠΎΠ²ΠΎΠΉ. Она ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠΆΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ дольшС, Ρ‡Π΅ΠΌ я ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π΄ΡƒΠΌΠ°Π». Π’Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ прСдставлСны АлСксом РассСлом Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Fronteers 2011. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π·Π° послСдниС Π³ΠΎΠ΄ ΠΈΠ»ΠΈ Π΄Π²Π°, ΠΈΡ… Π²ΠΎΡΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ сущСствСнно возросла. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² спСцификации всС Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Ρ€Π°Π·Π±Π΅Ρ€ΠΈΡ…ΠΈ. НапримСр, ΠΈΠΌΠΏΠΎΡ€Ρ‚ HTML являСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ, хотя большая Ρ‡Π°ΡΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ / рСсурсов ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ссылаСтся Π½Π° Π½Π΅Π³ΠΎ.

ВСстированиС

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

БСсплатный курс Β«NodeJS. Быстрый старт»

Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ курс ΠΈ ΡƒΠ·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с нуля Π½Π° JavaScript с NodeJS

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ курс

БущСствуСт Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… рСсурсов для тСстирования Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π•ΡΡ‚ΡŒ нСсколько ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅Ρ‰Π°ΡŽΡ‰ΠΈΡ… инструмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ skatejs ssr ΠΈ web component tester ΠΎΡ‚ Polymer. Но эти инструмСнты Π½Π° самом Π΄Π΅Π»Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для использования с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ. Π­Ρ‚ΠΎ создаСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ трудности для ΠΈΡ… использования с Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ.

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ

НаличиС Π±Π°Π·ΠΎΠ²ΠΎΠΉ систСмы, автоматичСски ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ прСдставлСния с модСлью Π΄Π°Π½Π½Ρ‹Ρ…, нСвСроятно. Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π² Angular ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ….

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡŽ состояния с прСдставлСниСм Π½Π΅ Ρ‚Π°ΠΊ слоТно Π² нСбольшом ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅. Но всС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ быстро Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ·-ΠΏΠΎΠ΄ контроля, ΠΈ Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ добавляСтС мноТСство ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ событий ΠΈ сСлСкторов запросов.

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

Shadow DOM

Π― Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² растСрянности ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Shadow DOM. Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, ΠΌΠ½Π΅ нравится идСя инкапсуляции. Π­Ρ‚ΠΎ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΉ шаблон проСктирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π΅Π»Π°Π΅Ρ‚ каскад стилСй Π±ΠΎΠ»Π΅Π΅ управляСмым, ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Однако это Ρ‚Π°ΠΊΠΆΠ΅ создаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ°Π»ΠΈ Π² эту ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, раздСляСмая Ρ‚Π°Π±Π»ΠΈΡ†Π° стилСй), ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ всСго это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, вСдутся постоянныС споры.

ГСнСрация структур DOM

Π§Π°ΡΡ‚ΡŒ вСликолСпия Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² / Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Angular ΠΈ React, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ со своим DOMain. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ с эффСктивным Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ΠΎΠΌ ΠΈ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ΠΎΠΌ структур Π² DOM. Из Π±Π»ΠΎΠ³Π° Angular University: Angular Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ HTML, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ для Π°Π½Π°Π»ΠΈΠ·Π°, вмСсто этого Angular Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ структуры Π΄Π°Π½Π½Ρ‹Ρ… DOM Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ!

НапримСр, Angular, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ jQuery, Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ структуры Π΄Π°Π½Π½Ρ‹Ρ… DOM Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ HTML Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² структуры Π΄Π°Π½Π½Ρ‹Ρ… DOM. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивно, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ устраняСт этот шаг Π°Π½Π°Π»ΠΈΠ·Π°. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ DOM Ρ‚Π°ΠΊΠΆΠ΅ вСсьма ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ позволяСт Π²Π°ΠΌ Π½Π΅ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ прСдставлСниС.

ΠŸΠ»ΡŽΡΡ‹

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π΅ΡΡ‚ΡŒ нСсколько нСоспоримых прСимущСств для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π°

ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ (с Π°ΠΊΡ†Π΅Π½Ρ‚ΠΎΠΌ Π½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ) Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ мСньшС ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅, Ρ‡Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ с использованиСм соврСмСнного Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°. НапримСр, Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ сборка ΠΌΠΎΠ΅Π³ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ прилоТСния с Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π°ΠΌΠΈ Π±Ρ‹Π»Π° мСньшС, Ρ‡Π΅ΠΌ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° сборки Angular.

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

Π Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Angular

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

ΠŸΠ°ΠΊΠ΅Ρ‚ прилоТСния Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ²

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ².

ПониманиС

Если Π²Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΈ Π΅Π³ΠΎ интСрфСйса ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ΠΌ для создания Π²Π΅Π±-прилоТСния Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… инструмСнтов. Как Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…ΠΎΡ‡Π΅Ρ‚ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ уровня мастСрства (насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ) Π² Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, ΠΌΠ½Π΅ Π±Ρ‹Π»ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ большС практичСского ΠΎΠΏΡ‹Ρ‚Π° с инструмСнтами сборки, API-интСрфСйсами Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, шаблонами проСктирования ΠΈ Ρ‚. Π΄.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π’ΠΎ, Ρ‡Ρ‚ΠΎ эти front-end Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ, ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Однако это ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΠΈΡ‚ΡŒ Π²Π°ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ; Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ понятия, ΠΊΠ°ΠΊ бСсплатный сыр. БущСствуСт мноТСство ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ΠΈ, ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΠΈ, Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ сравнСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Π΅ манипуляции с DOM. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… слоТностСй, рСализуя всС с нуля.

ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Angular ΠΈ React Π·Π½Π°ΡŽΡ‚ ΠΎΠ± этих ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… камнях ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π² качСствС срСдства дальнСйшСй ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ пСрСопрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² shouldUpdate ΠΈ onPush ChangeDetection.

ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π° ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄ΠΎΠΌ

Π’Ρ‹ рискуСтС всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ сторонний ΠΊΠΎΠ΄. Π­Ρ‚ΠΎΡ‚ риск ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… ΠΈ протСстированных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ / Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ устраняСтся. Если Π²Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ»ΠΈ с вашСй ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ этот риск ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ, Ρ‚Π°ΠΊ ΠΈ снаруТи.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π£ мСня Π±Ρ‹Π» ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Parcel. Иногда ΠΎΠ½ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, Ρ‡Π΅ΠΌ Webpack, ΠΊΠΎΠ³Π΄Π° пытаСтся ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ случаи, Π½ΠΎ я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ», Ρ‡Ρ‚ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ β€˜zero config’ ΠΏΠΎ большСй части справСдливо.
МнС Ρ‚Π°ΠΊΠΆΠ΅ ясно, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ React Β«Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉΒ», Π° Vue β€” «прогрСссивным» Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ. Π₯отя я понимаю ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ этого, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ React, Vue ΠΈ Angular Ρ€Π΅ΡˆΠ°ΡŽΡ‚ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, я Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽ ΠΈΡ… всС вмСстС, ΠΊΠ°ΠΊ Β«Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈΒ».

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Stencil or Polymer? Π― Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎ возмоТности ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ использования ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ². И ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, насколько стали Ρ…ΠΎΡ€ΠΎΡˆΠΈ Π²Π΅Π±-стандарты, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ соврСмСнным потрСбностям Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌ (Π½Π΅ учитывая инструмСнтов сборки).

Π― ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… способов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ SPA ΠΈΠ»ΠΈ прилоТСния Π² Ρ†Π΅Π»ΠΎΠΌ Π±Π΅Π· Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, я ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΠΎΠ΄ΠΈΠ½ способ, ΠΈ Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΡ‚ вас!

Подводя ΠΈΡ‚ΠΎΠ³ΠΈ

ΠžΡ‚Π»ΠΈΡ‡Π½Π°Ρ эвристика для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я Π½Π°Π·Ρ‹Π²Π°ΡŽ Β«ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΌΠ½Ρ‹ΠΌ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠΌΒ». По ΠΌΠ΅Ρ€Π΅ роста вашСго прилоТСния наступаСт ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ создаСтС свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° ΠΈ структуры. НапримСр, Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΡƒΡ‡Π° Ρ„ΠΎΡ€ΠΌ, ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ для Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

Если Π²Ρ‹ ΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅ΡΡŒ Π½Π° этом этапС, Π²Π°ΠΌ придСтся Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, стоит Π»ΠΈ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° созданиС систСм, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Π΅Π³ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ быстро Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π£ вас Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΌΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Ρƒ вас Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π½Ρ‹Π΅ ограничСния, Π½ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… сцСнариях.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ, вСроятно, станСт Π»Π΅Π³Ρ‡Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ / ΠΈΠ»ΠΈ собствСнного ΠΊΠΎΠ΄Π°. Π’ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ ΠΌΠΎΠΉ пост Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, Ссли большиС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ jQuery β€” ΠΏΠΎ большСй части инструмСнт ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ способы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ слоТных интСрфСйсных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±Π΅Π· Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ². Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, спСцификации для Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠ°ΠΊ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, всС Π΅Ρ‰Π΅ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ, ΠΈ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π³Π»Π°Π΄ΠΊΠΎΠΉ.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, насколько я ΠΌΠΎΠ³Ρƒ ΡΡƒΠ΄ΠΈΡ‚ΡŒ, ΠΏΠ»ΡŽΡΡ‹ использования Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° часто ΠΏΠ΅Ρ€Π΅Π²Π΅ΡˆΠΈΠ²Π°ΡŽΡ‚ минусы. Однако Ссли Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Π½Π΅ Π½Π°Ρ‡Π½ΡƒΡ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ, ΠΎΠ½ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ исчСзнут.

Автор: Luke Joliat

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: https://medium.freecodecamp.org/

РСдакция: Команда webformyself.

НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

БСсплатный курс Β«NodeJS. Быстрый старт»

Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ курс ΠΈ ΡƒΠ·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с нуля Π½Π° JavaScript с NodeJS

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ курс НуТны Π»ΠΈ Π½Π°ΠΌ всС Π΅Ρ‰Π΅ JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ?

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для создания сайта?

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ ΡƒΠ·Π½Π°ΠΉΡ‚Π΅ ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ ΠΏΠ»Π°Π½ ΠΏΠΎ созданию сайта с нуля!

Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎ

React ΠΈΠ»ΠΈ Angular ΠΈΠ»ΠΈ Vue.js β€” Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ? / Π₯Π°Π±Ρ€

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ JavaScript Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ быстрыми Ρ‚Π΅ΠΌΠΏΠ°ΠΌΠΈ, ΠΈ это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ сСгодня ΠΌΡ‹ часто обновляСм вСрсии Angular, React ΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ° Π½Π° этом Ρ€Ρ‹Π½ΠΊΠ΅ β€” Vue.js.

ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ основными прСимущСствами ΠΈ нСдостатками ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΈ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ для использования.

ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы Angular

Angular β€” это супСргСроичСская срСда JavaScript MVVM, основанная Π² 2009 Π³ΠΎΠ΄Ρƒ, которая ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для создания ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Angular:

  • Angular ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вмСстС с Typescript. Он ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ для этого.
  • Angular-language-service β€” обСспСчиваСт ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΈ Π°Π²Ρ‚ΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ шаблона HTML-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°.
  • НовыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ generation Angular, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ npm ΠΈΠ· CLI, generation, ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ Angular.
  • ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ докумСнтация, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ прибСгая ΠΊ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ»Π»Π΅Π³. Однако это Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для обучСния.
  • ΠžΠ΄Π½ΠΎΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΡΡ привязка Π΄Π°Π½Π½Ρ‹Ρ…, которая обСспСчиваСт ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ прилоТСния, Ρ‡Ρ‚ΠΎ сводит ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ риск Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ошибок.
  • MVVM (Model-View-ViewModel), которая позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ….
  • Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ зависимостСй ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², связанных с модулями ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π² Ρ†Π΅Π»ΠΎΠΌ.
  • Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ созданныС для большой ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

НСдостатки Angular:
  • Π Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… структур (Injectables, Components, Pipes, Modules ΠΈ Ρ‚. Π΄.) услоТняСт ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с React ΠΈ Vue.js, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Β«ComponentΒ».
  • ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мСдлСнная ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, учитывая Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, это ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Β«ChangeDetectionStrategyΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Компании, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Angular: Microsoft, Autodesk, MacDonald’s, UPS, Cisco Solution Partner Program, AT&T, Apple, Adobe, GoPro, ProtonMail, Clarity Design System, Upwork, Freelancer, Udemy, YouTube, Paypal, Nike, Google, Telegram, Weather, iStockphoto, AWS, Crunchbase.
ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы React

React β€” это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° JavaScript, разработанная Facebook Π² 2013 Π³ΠΎΠ΄Ρƒ, которая ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для создания соврСмСнных одностраничных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ любого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° React:

  • Π›Π΅Π³ΠΊΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ, благодаря простому Π΄ΠΈΠ·Π°ΠΉΠ½Ρƒ, использованию JSX (HTML-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ синтаксис) для шаблонов ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ тратят большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° написаниС соврСмСнного JavaScript ΠΈ мСньшС бСспокоятся ΠΎ ΠΊΠΎΠ΄Π΅, спСцифичном для Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.
  • ΠžΡ‡Π΅Π½ΡŒ быстрая, благодаря Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ React Virtual DOM ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ оптимизациям Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°.
  • ΠžΡ‚Π»ΠΈΡ‡Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° Π½Π° сторонС сСрвСра, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΌΠΎΡ‰Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ для ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
  • ΠŸΠ΅Ρ€Π²ΠΎΠΊΠ»Π°ΡΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Progressive Web App (PWA) благодаря Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ `create-react-app`.
  • ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… являСтся одностороннСй, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ мСньшС Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов.
  • Redux, самая популярная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для управлСния состояниСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² React, Π΅Π΅ Π»Π΅Π³ΠΊΠΎ ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.
  • React Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования (FP), создавая простой Π² тСстировании ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄.
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ TypeScript ΠΈΠ»ΠΈ Facebook’s Flow, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ JSX.
  • ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ вСрсиями, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΡ‡Π΅Π½ΡŒ прост: Facebook прСдоставляСт Β«ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈΒ» для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ большСй части процСсса.
  • Навыки, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² React, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π° React Native.

НСдостатки React:
  • React Π½Π΅ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π΅Π½ ΠΈ оставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΠΉ способ развития. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ лидСрством ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ процСссами.
  • БообщСство дСлится ΠΏΠΎ способам написания CSS Π² React, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ стилСй (CSS Modules) ΠΈ CSS-in-JS (Ρ‚.Π΅. Emotion ΠΈ Styled Components).
  • React ΠΎΡ‚Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π° основС классов, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ прСпятствиСм для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (ООП).
  • БмСшиваниС шаблонов с Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ (JSX) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ±ΠΈΡ‚ΡŒ с Ρ‚ΠΎΠ»ΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… знакомствах с React.

Компании, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ React: Facebook, Instagram, Netflix, New York Times, Yahoo, Khan Academy, Whatsapp, Codecademy, Dropbox, Airbnb, Asana, Atlassian, Intercom, Microsoft, Slack, Storybook ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅
ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы Vue.js

Vue.js β€” это JavaScript-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, основанный Π² 2013 Π³ΠΎΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для создания высокоадаптируСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов ΠΈ слоТных одностраничных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° Vue.js:

  • УсилСнный HTML. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Vue.js ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ характСристик схоТих с Angular, Π° это, благодаря использованию Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ HTML- Π±Π»ΠΎΠΊΠΎΠ².
  • ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ докумСнтация. Vue.js ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ процСсс обучСния для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ знания HTML ΠΈ JavaScript.
  • ΠΠ΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ осущСствлСн быстрый ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² ΠΊ Vue.js ΠΈΠ·-Π·Π° сходства с Angular ΠΈ React с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹.
  • ΠŸΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π°Ρ интСграция. Vue.js ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ для создания одностраничных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΈ для Π±ΠΎΠ»Π΅Π΅ слоТных Π²Π΅Π±-интСрфСйсов ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ нСбольшиС ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ элСмСнты ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ инфраструктуру Π±Π΅Π· Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… послСдствий.
  • ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Vue.js ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ довольно Π±ΠΎΠ»ΡŒΡˆΠΈΡ… шаблонов ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сдСланы ΠΏΠΎΡ‡Ρ‚ΠΈ Π·Π° Ρ‚ΠΎΠΆΠ΅ врСмя, Ρ‡Ρ‚ΠΎ ΠΈ Π±ΠΎΠ»Π΅Π΅ простыС.
  • ΠšΡ€ΠΎΡˆΠ΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€. Vue.js вСсит ΠΎΠΊΠΎΠ»ΠΎ 20 ΠšΠ‘, сохраняя ΠΏΡ€ΠΈ этом свою ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ позволяСт Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ.

НСдостатки Vue.js:
  • НСдостаток рСсурсов. Vue.js ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ довольно Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ долю Ρ€Ρ‹Π½ΠΊΠ° ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с React ΠΈΠ»ΠΈ Angular, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΠΌΠ΅Π½ знаниями Π² этой срСдС всС Π΅Ρ‰Π΅ находится Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ стадии.
  • Риск Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ гибкости. Иногда Ρƒ Vue.js ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΈ ΠΏΠΎΠΊΠ° Π΅Ρ‰Π΅ Π½Π΅Ρ‚ ΠΎΠΏΡ‹Ρ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ появятся Π² блиТайшСС врСмя.

Компании, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Vue.js: Xiaomi, Alibaba, WizzAir, EuroNews, Grammarly, Gitlab ΠΈ Laracasts, Adobe, Behance, Codeship, Reuters.
Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Для ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π΅Ρ‚ сущСствСнной Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, просто Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ½ΡƒΡ‚ΡŒ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ. Π’ нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² основном Π² React ΠΈ Angular, Π½ΠΎ Vue.js Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Π΅ΡΡ‚ΡŒ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы, Π° это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ случая.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ нСдостатки JavaScript

Как ΠΈ всС языки ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, JavaScript ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ прСимущСства ΠΈ нСдостатки.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° JavaScript:

Быстрый для ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: сцСнарий Java написан для клиСнтской стороны, для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π²Π΅Π±-сСрвСра Π½Π΅ трСбуСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°. Он Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ нуТдаСтся Π² компиляции Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π΅ΠΌΡƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ прСимущСства скорости. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сцСнарий выполняСтся Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π² зависимости ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ. НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ любой ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ запроса Π½Π° сСрвСр. Π­Ρ‚ΠΎ сниТаСт Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° сСрвСр.

ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π°: JavaScript ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прост Π² освоСнии ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ модСль DOM, которая обСспСчиваСт мноТСство прСдустановлСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° страницах, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Π»Π΅Π³ΠΊΠΈΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сцСнария для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ†Π΅Π»ΠΈ.

Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: JavaScript ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² самых Ρ€Π°Π·Π½Ρ‹Ρ… прилоТСниях. Π’ настоящСС врСмя сущСствуСт мноТСство способов использования JavaScript Ρ‡Π΅Ρ€Π΅Π· сСрвСры Node.js. Если Π²Ρ‹ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ node.js с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Express, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‚Π°ΠΊΡƒΡŽ ΠΊΠ°ΠΊ mongodb, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ JavaScript Π² интСрфСйсС для ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ JavaScript ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° Π²ΠΏΠ΅Ρ€Π΅Π΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ JavaScript.

НСдостатки JavaScript:

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ: JavaScript явно Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΊ Π²Π΅Π±-страницам ΠΈ клиСнтским Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ систСму ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, поэтому врСдоносный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π½Π° клиСнтской машинС.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°: JavaScript ΠΈΠ½ΠΎΠ³Π΄Π° интСрпрСтируСтся ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ JavaScript ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСсогласованности с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ интСрфСйса. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ JavaScript зависит ΠΎΡ‚ манипуляции элСмСнтами DOM Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ². И Ρ€Π°Π·Π½Ρ‹Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ доступа ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, Π² частности Internet Explorer.

ВсС большС ΠΈ большС ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚ΠΎΠ²: JavaScript — это ΠΎΡ‡Π΅Π½ΡŒ старый язык сцСнариСв, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, ΠΈ Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС вмСсто Π½Π΅Π³ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, JQuery) Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΈ Π»Π΅Π³ΠΊΠΈΠΌ способом.

ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ JavaScript: Ссли Π²Ρ‹ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ JavaScript Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, вСсь ΠΊΠΎΠ΄ JavaScript Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π°: Ρ„Π°ΠΉΠ» JavaScript загруТаСтся Π½Π° клиСнтской машинС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ³ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: http://net-informations.com/js/iq/advan.htm

плюсов ΠΈ минусов JavaScript — Π²Π·Π²Π΅ΡˆΠΈΠ²Π°ΠΉΡ‚Π΅ ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΌΡƒΠ΄Ρ€ΠΎ!

JavaScript стал Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ, каТСтся, всС говорят. ΠžΠ±Π»Π°ΡΡ‚ΡŒ JavaScript ΠΎΠ³Ρ€ΠΎΠΌΠ½Π°, ΠΈ Π² Π½Π΅ΠΉ Π΅ΡΡ‚ΡŒ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы. ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ³Π°ΡΡΡŒ Π² нашСм руководствС ΠΏΠΎ JavaScript , ΠΌΡ‹ собираСмся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ плюсов ΠΈ минусов использования JavaScript . Π­Ρ‚ΠΎ прСкрасный язык для изучСния ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠœΡ‹ ΠΏΠΎΠΉΠΌΠ΅ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ JavaScript Ρ‚Π°ΠΊ популярСн. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слабыС стороны, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ JavaScript.

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ нСдостатка Π΅ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ прСимущСство.

— W. Clement Stone

НачнСм с простого Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ DataFlair ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ° JavaScript ΠΏΠΎ плюсам ΠΈ минусам JavaScript.

Pros and cons of JavaScript

ΠŸΠ»ΡŽΡΡ‹ ΠΈ минусы JavaScript

Как ΠΈ Ρƒ всСх Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования, JavaScript Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ свои прСимущСства ΠΈ нСдостатки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΊΡ€Π°Ρ‚ΠΊΠΎ обсудили Π½ΠΈΠΆΠ΅ —

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° JavaScript

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΌΡ‹ обсудим прСимущСства ΠΈΠ»ΠΈ прСимущСства с использованиСм JavaScript —

1.Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ JavaScript являСтся Β«ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΒ» языком , ΠΎΠ½ сокращаСт врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для компиляции Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками программирования, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Java . JavaScript Ρ‚Π°ΠΊΠΆΠ΅ являСтся клиСнтским скриптом, ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‰ΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ экономит врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ сСрвСру.

2. ΠŸΡ€ΠΎΡΡ‚ΠΎΡ‚Π°

JavaScript Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈ Π²Ρ‹ΡƒΡ‡ΠΈΡ‚ΡŒ. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° проста ΠΊΠ°ΠΊ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, экономя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π΅Π½Π΅Π³ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ динамичСского ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° для Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°.

3. ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС соврСмСнныС Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ JavaScript, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ практичСски Π²Π΅Π·Π΄Π΅. ВсС извСстныС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ JavaScript Π² качСствС инструмСнта, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Google, Amazon, PayPal ΠΈ Ρ‚. Π”.

4. ВзаимодСйствиС

JavaScript ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками программирования, поэтому ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΅Π³ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π»ΡŽΠ±ΡƒΡŽ Π²Π΅Π±-страницу ΠΈΠ»ΠΈ Π² скрипт Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ языка программирования.

5.Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° сСрвСра

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ JavaScript Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π² самом Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Π° Π½Π΅ отправляСтся Π½Π° сСрвСр. Π’ случаС ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ расхоТдСний вСсь сайт Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ. Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ обновляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ сСгмСнт страницы.

6. Π‘ΠΎΠ³Π°Ρ‚Ρ‹Π΅ интСрфСйсы

JavaScript прСдоставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ интСрфСйсы для создания Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π²Π΅Π±-страниц. ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π·ΡƒΠ½ΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ интСрфСйс Π²Π΅Π±-страниц. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Π²Π΅Π±-страницС.

7. Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π‘Ρ‚ΠΎΡ€ΠΎΠ½Π½ΠΈΠ΅ надстройки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Greasemonkey (Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Mozilla Firefox) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² свой ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя ΠΈ дСньги. Π­Ρ‚ΠΈ дополнСния ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ JavaScript-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС ΠΈ с большСй Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ, Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки программирования.

8. Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

JavaScript Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ с интСрфСйсом, Ρ‚Π°ΠΊ ΠΈ с интСрфСйсом.Π’ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ NodeJS, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ AngularJS , ReactJS ΠΈ Ρ‚. Π”.

9. МСньшС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов

JavaScript ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π΅Π±-сайтов ΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π·Π° счСт сокращСния Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠΎΠ΄Π°. ΠšΠΎΠ΄Ρ‹ содСрТат мСньшС Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов благодаря использованию Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ†ΠΈΠΊΠ»ΠΎΠ² , доступа ΠΊ DOM ΠΈ Ρ‚. Π”.

НСдостатки JavaScript

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, послС обсуТдСния прСимущСств использования JavaScript, ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСдостатки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ JavaScript, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΊΡ€Π°Ρ‚ΠΊΠΎ обсудили Π½ΠΈΠΆΠ΅ —

1.Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π½Π° сторонС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠΎΠ΄ JavaScript доступСн для просмотра ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹Ρ… цСлях. Π­Ρ‚ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ использованиС исходного ΠΊΠΎΠ΄Π° Π±Π΅Π· Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° сайтС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ставит ΠΏΠΎΠ΄ ΡƒΠ³Ρ€ΠΎΠ·Ρƒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° сайтС.

2. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ JavaScript Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°Ρ…. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈΡ….

3. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ

Π₯отя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ HTML ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ, ΠΎΠ½ΠΈ Π½Π΅ Ρ‚Π°ΠΊ эффСктивны, ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ C / C ++. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ошибок, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

4. ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ΅ наслСдованиС

JavaScript ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ΅ наслСдованиС, Π° Π½Π΅ мноТСствСнноС наслСдованиС. НСкоторыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ этой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ языковой характСристики.

ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅! Π’Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ наш самый Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ Π±Π»ΠΎΠ³ ΠΏΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ JavaScript?

5.Вялая побитовая функция

JavaScript сохраняСт число ΠΊΠ°ΠΊ 64-Π±ΠΈΡ‚Π½ΠΎΠ΅ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, JavaScript ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ число Π² 32-разрядныС Ρ†Π΅Π»Ρ‹Π΅ числа со Π·Π½Π°ΠΊΠΎΠΌ, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠΌΠΈ ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² 64-разрядныС числа JavaScript. Π­Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΈ числа Π² Ρ†Π΅Π»ΠΎΠ΅ число. Π­Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для запуска скрипта, ΠΈ сниТаСт Π΅Π³ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ.

6. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°

Одна ошибка ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ всСго ΠΊΠΎΠ΄Π° JavaScript Π½Π° Π²Π΅Π±-сайтС.Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ это выглядит Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ JavaScript отсутствуСт. Однако Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρ‹ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Ρ‚Π΅Ρ€ΠΏΠΈΠΌΡ‹ ΠΊ этим ошибкам.

РСзюмС

ПослС взвСшивания плюсов ΠΈ минусов JavaScript ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ этого поля. Π₯отя JavaScript являСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ с мноТСством Π²Ρ‹Π³ΠΎΠ΄Π½Ρ‹Ρ… прСимущСств, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ страдаСт ΠΎΡ‚ своих нСдостатков. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ Π΄Π°Π»Π° Π½Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ JavaScript ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ JavaScript, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ поняли ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ использовании JavaScript. Π’Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ наш ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠ³ ΠΏΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ JavaScript.

НадСюсь, Ρ‡Ρ‚ΠΎ прСдоставлСнная информация Π±Ρ‹Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ»Π΅Π·Π½Π°.

НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свой ΠΎΡ‚Π·Ρ‹Π² Π½ΠΈΠΆΠ΅ Π² ΠΏΠΎΠ»Π΅ для ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² …

.

Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы JavaScript> Π–ΡƒΡ€Π½Π°Π» CEOWORLD