ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Deno Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½ΡƒΡŽ JavaScript-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ, ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° Node.js

Π”ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ пуск Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Deno 0.33, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‰Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° Node.js, Π·Π° самостоятСлно изпълнСниС Π½Π° прилоТСния Π½Π° JavaScript ΠΈ TypeScript, която ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° изпълнСниС Π½Π° прилоТСния нСзависими ΠΎΡ‚ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° създаванС Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°. Deno ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° JavaScript Π΄Π²ΠΈΠΆΠΊΠ° V8, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ‰ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Node.js ΠΈ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Chromium. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС разпространява Π΅ с Π»ΠΈΡ†Π΅Π½Π· MIT. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½ ΠΎΡ‚ Райън Π”Π°Π» (Ryan Dahl), ΡΡŠΠ·Π΄Π°Ρ‚Π΅Π»Ρ Π½Π° JavaScript ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Node.js.

Π•Π΄Π½ΠΎ ΠΎΡ‚ основнитС Ρ†Π΅Π»ΠΈ Π½Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ² runtime Π·Π° JavaScript Π΅ Π΄Π° сС прСдостави ΠΏΠΎ-бСзопасна срСда. Π—Π° повишаванС Π½Π° сигурността, ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π° ΠΎΠΊΠΎΠ»ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° V8 Π΅ написана Π½Π° Rust, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява избягванС Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ уязвимости, ΠΏΡ€ΠΎΠΈΠ·Ρ‚ΠΈΡ‡Π°Ρ‰ΠΈ ΠΎΡ‚ нисконивови ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚ слСд освобоТдаванСто ΠΈ разиндСксиранС Π½Π° Π½ΡƒΠ»Π΅Π²ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. Π—Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° заявки Π² Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰ Ρ€Π΅ΠΆΠΈΠΌ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Tokio, ΡΡŠΡ‰ΠΎ написана Π½Π° Rust. Tokio позволява ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° високо ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΈ прилоТСния Π½Π° Π±Π°Π·Π° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠΉΠ½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‰Π° многопоточност ΠΈ асинхронна ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ заявки.

Основни особСности Deno:

  • ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ към бСзопасност ΠΏΡ€ΠΈ настройкитС ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. Π”ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΎΠΊΠΎΠ»Π½Π° срСда ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ ΠΈ изисква явно Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅;
  • Π’Π³Ρ€Π°Π΄Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° TypeScript освСн JavaScript;
  • Runtime Π΅ прСдоставСн ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π΅Π΄ΠΈΠ½ самостоятСлСн ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ Ρ„Π°ΠΉΠ» ("deno"). Π—Π° стартиранС Π½Π° прилоТСния с Deno Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ Π·Π° Π²Π°ΡˆΠ°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π΅Π΄ΠΈΠ½ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ Ρ„Π°ΠΉΠ», с Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠΎΠ»ΠΎ 10 MB, Π±Π΅Π· външни зависимости ΠΈ Π±Π΅Π· Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ спСцифична инсталация Π² систСмата;
  • ΠŸΡ€ΠΈ стартиранС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° адрСсация Ρ‡Ρ€Π΅Π· URL. НапримСр, Π·Π° стартиранС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° welcome.js ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Β«deno https://deno.land/std/examples/welcome.jsΒ». ΠšΠΎΠ΄ΡŠΡ‚ ΠΎΡ‚ външни рСсурси сС изтСгля ΠΈ ΠΊΠ΅ΡˆΠΈΡ€Π° Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° систСма, Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ сС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ (Π·Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Π΄Π° сС стартира ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ с Ρ„Π»Π°Π³Π° Β«β€”reloadΒ»);
  • Π•Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ заявки ΠΏΠΎ HTTP Π² прилоТСнията, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° високопроизводитСлни ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния;
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° създаванС Π½Π° унивСрсални ΡƒΠ΅Π± прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΊΠ°ΠΊΡ‚ΠΎ Π² Deno, Ρ‚Π°ΠΊΠ° ΠΈ Π² обикновСния ΡƒΠ΅Π± Π±Ρ€Π°ΡƒΠ·ΡŠΡ€;
  • ОсвСн runtime, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Deno ΡΡŠΡ‰ΠΎ изпълнява ролята Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π΅Π½ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ ΠΈ позволява Π² ΠΊΠΎΠ΄Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠΎ URL. НапримСр, Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ» ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡƒΠΊΠ°ΠΆΠ΅ Π² ΠΊΠΎΠ΄Π° β€žimport * as log from "https://deno.land/std/log/mod.ts". Π€Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅, Π·Π°Ρ€Π΅Π΄Π΅Π½ΠΈ ΠΎΡ‚ външни ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΏΠΎ URL, сС ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‚. ΠŸΡ€ΠΈΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚Ρ‚Π° към вСрсиитС Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ сС опрСдСля Ρ‡Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π·Π° Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° вСрсията Π²ΡŠΡ‚Ρ€Π΅ Π² URL, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "https://unpkg.com/liltest@0.0.5/dist/liltest.js";
  • Π’ΠΊΠ»ΡŽΡ‡Π΅Π½Π° систСма инспСкция Π½Π° зависимости (ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«deno infoΒ») ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° Π·Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄Π° (deno fmt).
  • Π—Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° прилоТСния ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½Π°Π±ΠΎΡ€ стандартни ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π»ΠΈ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚;
  • Всички скриптовС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈ Π² Π΅Π΄ΠΈΠ½ JavaScript Ρ„Π°ΠΉΠ».

Разлики с Node.js:

  • Deno Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° пакСтния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ npm
    ΠΈ Π½Π΅ Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ с Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, адрСсиранСто Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ‡Ρ€Π΅Π· URL ΠΈΠ»ΠΈ ΠΏΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡŠΡ‚, Π° самитС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π½Π° всСки сайт;
  • Π’ Deno Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Β«package.jsonΒ» Π·Π° опрСдСлянС Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅;
  • Различия Π² API, всички асинхронни дСйствия Π² Deno Π²Ρ€ΡŠΡ‰Π°Ρ‚ promise;
  • Deno изисква явно опрСдСлянС Π½Π° всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΡ€Π°Π²Π° Π·Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΌΡ€Π΅ΠΆΠ° ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата;
  • Всички Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ нямат ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, водят Π΄ΠΎ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ;
  • Π’ Deno сС ΠΏΡ€ΠΈΠ»Π°Π³Π° систСма ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ECMAScript ΠΈ Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° require().

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster