ืคืœื˜ืคื•ืจืžืช Deno JavaScript ืชื•ืืžืช ืžื•ื“ื•ืœื™ NPM

Deno 1.28 ืฉื•ื—ืจืจ, ืžืกื’ืจืช ืœ-Sandboxing JavaScript ื•-TypeScript ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ื ื›ื“ื™ ืœื™ืฆื•ืจ ืžื˜ืคืœื™ื ื‘ืฆื“ ื”ืฉืจืช. ื”ืคืœื˜ืคื•ืจืžื” ืคื•ืชื—ื” ืขืœ ื™ื“ื™ Ryan Dahl, ื”ื™ื•ืฆืจ ืฉืœ Node.js. ื›ืžื• Node.js, Deno ืžืฉืชืžืฉ ื‘ืžื ื•ืข V8 JavaScript, ื”ืžืฉืžืฉ ื’ื ื‘ื“ืคื“ืคื ื™ื ืžื‘ื•ืกืกื™ Chromium. ื™ื—ื“ ืขื ื–ืืช, Deno ืื™ื ื• ืžื–ืœื’ ืฉืœ Node.js, ืืœื ื”ื•ื ืคืจื•ื™ืงื˜ ื—ื“ืฉ ืฉื ื•ืฆืจ ืžืืคืก. ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT. Builds ืžื•ื›ื ื™ื ืขื‘ื•ืจ Linux, Windows ื•-macOS.

ืคืจื•ื™ืงื˜ Deno ื ื•ืฆืจ ื›ื“ื™ ืœืกืคืง ืœืžืฉืชืžืฉื™ื ืกื‘ื™ื‘ื” ืžืื•ื‘ื˜ื—ืช ื™ื•ืชืจ ื•ืœืžื ื•ืข ืฉื’ื™ืื•ืช ืžื•ืฉื’ื™ื•ืช ื‘ืืจื›ื™ื˜ืงื˜ื•ืจืช Node.js. ื›ื“ื™ ืœืฉืคืจ ืืช ื”ืื‘ื˜ื—ื”, ืžื ื•ืข ื”-V8 ื›ืชื•ื‘ ื‘-Rust, ืžื” ืฉืžื•ื ืข ืจื‘ื•ืช ืžื”ื—ื•ืœืฉื•ืช ื”ื ื•ื‘ืขื•ืช ืžืžื ื™ืคื•ืœืฆื™ื” ืฉืœ ื–ื™ื›ืจื•ืŸ ื‘ืจืžื” ื ืžื•ื›ื”. ื›ื“ื™ ืœืขื‘ื“ ื‘ืงืฉื•ืช ื‘ืžืฆื‘ ืœื ื—ื•ืกื, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืคืœื˜ืคื•ืจืžืช Tokio, ื”ื›ืชื•ื‘ื” ื’ื ื‘-Rust. Tokio ืžืืคืฉืจืช ืœืš ืœื™ืฆื•ืจ ื™ื™ืฉื•ืžื™ื ื‘ืขืœื™ ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ืžื•ื ืขืช ืื™ืจื•ืขื™ื, ื”ืชื•ืžื›ื™ื ื‘ืจื™ื‘ื•ื™ ื”ืฉื—ืœื•ืช ื•ืขื™ื‘ื•ื“ ื‘ืงืฉื•ืช ืจืฉืช ื‘ืžืฆื‘ ืืกื™ื ื›ืจื•ื ื™.

ืฉื™ื ื•ื™ ืžืจื›ื–ื™ ื‘ืžื”ื“ื•ืจื” ื”ื—ื“ืฉื” ื”ื•ื ื™ื™ืฆื•ื‘ ื”ืชืื™ืžื•ืช ืœื—ื‘ื™ืœื•ืช ื”ืžืชืืจื—ื•ืช ื‘ืžืื’ืจ NPM, ืžื” ืฉืžืืคืฉืจ ืœ-Deno ืœื”ืฉืชืžืฉ ื‘ื™ื•ืชืจ ืž-1.3 ืžื™ืœื™ื•ืŸ ืžื•ื“ื•ืœื™ื ืฉื ื•ืฆืจื• ืขื‘ื•ืจ ืคืœื˜ืคื•ืจืžืช Node.js. ืœื“ื•ื’ืžื”, ื™ื™ืฉื•ืžื™ื ืžื‘ื•ืกืกื™ Deno ื™ื›ื•ืœื™ื ื›ืขืช ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœื™ ื’ื™ืฉื” ืžืชืžืฉื›ืช ืœื ืชื•ื ื™ื ื›ื’ื•ืŸ Prisma, Mongoose ื•-MySQL, ื›ืžื• ื’ื ื‘ืžืกื’ืจื•ืช ื—ื–ื™ืชื™ื•ืช ื›ื’ื•ืŸ React ื•-Vue. ื—ืœืง ืžืžื•ื“ื•ืœื™ NPM ืขื“ื™ื™ืŸ ืœื ืชื•ืืžื™ื ืœ-Deno, ืœืžืฉืœ ืขืงื‘ ื›ืจื™ื›ื•ืช ืœืจื›ื™ื‘ื™ ืกื‘ื™ื‘ื” ืกืคืฆื™ืคื™ื™ื ืœ-Node.js ื›ื’ื•ืŸ ืงื•ื‘ืฅ package.json. ื›ืžื• ื›ืŸ, ืขื“ื™ื™ืŸ ืœื ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” "deno compile" ืขื ืžื•ื“ื•ืœื™ NPM. ืžื”ื“ื•ืจื•ืช ืขืชื™ื“ื™ื•ืช ืžืชื›ื ื ื•ืช ืœื˜ืคืœ ื‘ื—ื•ืกืจ ื”ื”ืชืืžื” ื•ื”ืžื’ื‘ืœื•ืช ื”ืœืœื•.

ื”ืชืžื™ื›ื” ื‘ืžืขืจื›ืช ื”ืžื•ื“ื•ืœ ECMAScript ืฉืœ Deno ื•ื‘ืžื•ื“ืœ Web API ื ืฉืžืจืช ื‘ืื•ืชื” ืจืžื”, ื•ืกื›ื™ืžืช ื”ื˜ืขื™ื ื” ื”ืžื•ื›ืจืช ืฉืœ Deno ืžื‘ื•ืกืกืช URL ืžืฉืžืฉืช ืœื™ื™ื‘ื•ื โ€‹โ€‹ืžื•ื“ื•ืœื™ NPM. ื›ื“ื™ ืœื’ืฉืช ืœืžื•ื“ื•ืœื™ NPM, ื™ืฉ ืงื™ื“ื•ืžืช URL ืžื™ื•ื—ื“ืช "npm:", ืฉื‘ื” ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืื•ืชื• ืื•ืคืŸ ื›ืžื• ืžื•ื“ื•ืœื™ Deno ืจื’ื™ืœื™ื. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื™ื™ื‘ื ืžื•ื“ื•ืœ NPM, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ 'import { chalk } from "npm:chalk@5";', ื•ืœื”ืคืขื™ืœ ืกืงืจื™ืคื˜ NPM ืžืฉื•ืจืช ื”ืคืงื•ื“ื” - "deno run --allow-env --allow -ืงืจื npm:create- vite-extra."

ื”ืฉื™ืžื•ืฉ ื‘ื—ื‘ื™ืœื•ืช NPM ื‘-Deno ื”ื•ื ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืžืืฉืจ ื‘-Node.js, ืžื›ื™ื•ื•ืŸ ืฉืื™ืŸ ืฆื•ืจืš ื‘ื”ืชืงื ื” ืžืจืืฉ ืฉืœ ืžื•ื“ื•ืœื™ื (ืžื•ื“ื•ืœื™ื ืžื•ืชืงื ื™ื ื‘ืขืช ื”ื”ืฉืงื” ื”ืจืืฉื•ื ื” ืฉืœ ื”ืืคืœื™ืงืฆื™ื”), ืื™ืŸ ืงื•ื‘ืฅ package.json ื•ืื™ืŸ ื‘ืจื™ืจืช ืžื—ื“ืœ node_modules ืกืคืจื™ื™ื” (ืžื•ื“ื•ืœื™ื ืžืื•ื—ืกื ื™ื ื‘ืžื˜ืžื•ืŸ ื‘ืกืคืจื™ื™ื” ืžืฉื•ืชืคืช, ืืš ื ื™ืชืŸ ืœื”ื—ื–ื™ืจ ืืช ื”ื”ืชื ื”ื’ื•ืช ื”ื™ืฉื ื” ื‘ืืžืฆืขื•ืช ื”ืืคืฉืจื•ืช "--node-modules-dir").

ื™ื™ืฉื•ืžื™ื ืžื‘ื•ืกืกื™ NPM ืฉื•ืžืจื™ื ืขืœ ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ืงืจืช ื”ื’ื™ืฉื”, ื”ื‘ื™ื“ื•ื“ ื•ื”ื™ื›ื•ืœื•ืช ื”ืžืชืงื“ืžื•ืช ื”ืจื’ื™ืฉื•ืช ืœืื‘ื˜ื—ื” ืฉืœ Deno. ื›ื“ื™ ืœื”ืชืžื•ื“ื“ ืขื ื”ืชืงืคื•ืช ื‘ืืžืฆืขื•ืช ืชืœื•ืช ืžืคื•ืงืคืงืช, Deno ื—ื•ืกืžืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืืช ื›ืœ ื”ื ื™ืกื™ื•ื ื•ืช ืœืงื‘ืœ ื’ื™ืฉื” ืœืžืขืจื›ืช ืžืคื ื™ ืชืœื•ืช ื•ืžืฆื™ื’ื” ืื–ื”ืจื” ืœื’ื‘ื™ ื‘ืขื™ื•ืช ืฉื–ื•ื”ื•. ืœื“ื•ื’ืžื”, ื›ืืฉืจ ืžื•ื“ื•ืœ ืžื ืกื” ืœื”ืฉื™ื’ ื’ื™ืฉืช ื›ืชื™ื‘ื” ืืœ /usr/bin/, ืชื•ืฆื’ ื‘ืงืฉืช ืื™ืฉื•ืจ ืœืคืขื•ืœื” ื–ื•: deno run npm:install-malware โš ๏ธ โ”Œ Deno ืžื‘ืงืฉ ื’ื™ืฉืช ื›ืชื™ื‘ื” ืืœ /usr/bin/. โ”œ ืžืชื‘ืงืฉ ืขืœ ื™ื“ื™ `install-malware` โ”œ ื”ืคืขืœ ืฉื•ื‘ ืขื --allow-write ื›ื“ื™ ืœืขืงื•ืฃ ื”ื•ื“ืขื” ื–ื•. โ”” ืœืืคืฉืจ? [y/n] (y = ื›ืŸ, ืืคืฉืจ; n = ืœื, ื”ื›ื—ื™ืฉ) >

ืฉื™ืคื•ืจื™ื ืฉืื™ื ื NPM ื‘ื’ืจืกื” ื”ื—ื“ืฉื” ื›ื•ืœืœื™ื ืขื“ื›ื•ืŸ ืžื ื•ืข V8 ืœืฉื—ืจื•ืจ 10.9, ื–ื™ื”ื•ื™ ืื•ื˜ื•ืžื˜ื™ ืฉืœ ืงื‘ืฆื™ื ืขื ืžื ืขื•ืœื™ื, ื™ื™ืฆื•ื‘ ืฉืœ Deno.bench(), Deno.gid(), Deno.networkInterfaces(), Deno.systemMemoryInfo() ื•-Deno APIs. .uid(), ื”ื•ืกืคืช API ื—ื“ืฉ (Deno.Command) ืœื ื™ืฆื™ื‘ ืœื”ืคืขืœืช ืคืงื•ื“ื•ืช (ืชื—ืœื™ืฃ ืื•ื ื™ื‘ืจืกืœื™ ืขื‘ื•ืจ Deno.spawn, Deno.spawnSync ื•-Deno.spawnChild).

ืชื›ื•ื ื•ืช ืขื™ืงืจื™ื•ืช ืฉืœ Deno:

  • ืชืฆื•ืจืช ื‘ืจื™ืจืช ืžื—ื“ืœ ืžื•ื›ื•ื•ื ืช ืื‘ื˜ื—ื”. ื’ื™ืฉื” ืœืงื‘ืฆื™ื, ืจืฉืช ื•ื’ื™ืฉื” ืœืžืฉืชื ื™ ืกื‘ื™ื‘ื” ืžื•ืฉื‘ืชื™ื ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื•ื™ืฉ ืœื”ืคืขื™ืœ ืื•ืชื ื‘ืžืคื•ืจืฉ. ื™ื™ืฉื•ืžื™ื ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืคื•ืขืœื™ื ื‘ืกื‘ื™ื‘ื•ืช ืืจื’ื– ื—ื•ืœ ืžื‘ื•ื“ื“ื•ืช ื•ืื™ื ื ื™ื›ื•ืœื™ื ืœื’ืฉืช ืœื™ื›ื•ืœื•ืช ื”ืžืขืจื›ืช ืœืœื ืžืชืŸ ื”ืจืฉืื•ืช ืžืคื•ืจืฉื•ืช;
  • ืชืžื™ื›ื” ืžื•ื‘ื ื™ืช ื‘-TypeScript ืžืขื‘ืจ ืœ-JavaScript. ืœื‘ื“ื™ืงืช ืกื•ื’ื™ื ื•ื™ืฆื™ืจืช JavaScript, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืžื”ื“ืจ TypeScript ื”ืกื˜ื ื“ืจื˜ื™, ืžื” ืฉืžื•ื‘ื™ืœ ืœื™ืจื™ื“ื” ื‘ื‘ื™ืฆื•ืขื™ื ื‘ื”ืฉื•ื•ืื” ืœื ื™ืชื•ื— JavaScript ื‘-V8;
  • ื–ืžืŸ ื”ืจื™ืฆื” ืžื’ื™ืข ื‘ืฆื•ืจื” ืฉืœ ืงื•ื‘ืฅ ื”ืคืขืœื” ืขืฆืžืื™ ืื—ื“ ("deno"). ื›ื“ื™ ืœื”ืคืขื™ืœ ื™ื™ืฉื•ืžื™ื ื‘ืืžืฆืขื•ืช Deno, ืืชื” ืจืง ืฆืจื™ืš ืœื”ื•ืจื™ื“ ืงื•ื‘ืฅ ื”ืคืขืœื” ืื—ื“ ืขื‘ื•ืจ ื”ืคืœื˜ืคื•ืจืžื” ืฉืœืš, ื‘ื’ื•ื“ืœ ืฉืœ ื›-30 ืžื’ื”-ื‘ื™ื™ื˜, ืฉืื™ืŸ ืœื• ืชืœื•ืช ื—ื™ืฆื•ื ื™ืช ื•ืื™ื ื• ื“ื•ืจืฉ ื”ืชืงื ื” ืžื™ื•ื—ื“ืช ืขืœ ื”ืžืขืจื›ืช. ื™ืชืจ ืขืœ ื›ืŸ, deno ืื™ื ื• ื™ื™ืฉื•ื ืžื•ื ื•ืœื™ื˜ื™, ืืœื ื”ื•ื ืื•ืกืฃ ืฉืœ ื—ื‘ื™ืœื•ืช ืืจื’ื– Rust (deno_core, rusty_v8), ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ื”ืŸ ื‘ื ืคืจื“;
  • ื‘ืขืช ื”ืคืขืœืช ื”ืชื•ื›ื ื™ืช, ื›ืžื• ื’ื ืœื˜ืขื™ื ืช ืžื•ื“ื•ืœื™ื, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ื›ืชื•ื‘ืช URL. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช ืชื•ื›ื ื™ืช welcome.js, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” "deno https://deno.land/std/examples/welcome.js". ืงื•ื“ ืžืžืฉืื‘ื™ื ื—ื™ืฆื•ื ื™ื™ื ืžื•ืจื™ื“ื™ื ื•ืžืื—ืกื ื™ื ื‘ืžื˜ืžื•ืŸ ื‘ืžืขืจื›ืช ื”ืžืงื•ืžื™ืช, ืืš ืœืขื•ืœื ืœื ืžืชืขื“ื›ืŸ ืื•ื˜ื•ืžื˜ื™ืช (ืขื“ื›ื•ืŸ ืžื—ื™ื™ื‘ ื”ืคืขืœืช ื”ืืคืœื™ืงืฆื™ื” ื‘ืžืคื•ืจืฉ ืขื ื”ื“ื’ืœ "--reload");
  • ืขื™ื‘ื•ื“ ื™ืขื™ืœ ืฉืœ ื‘ืงืฉื•ืช ืจืฉืช ื‘ืืžืฆืขื•ืช HTTP ื‘ืืคืœื™ืงืฆื™ื•ืช; ื”ืคืœื˜ืคื•ืจืžื” ืžื™ื•ืขื“ืช ืœื™ืฆื™ืจืช ื™ื™ืฉื•ืžื™ ืจืฉืช ื‘ืขืœื™ ื‘ื™ืฆื•ืขื™ื ื’ื‘ื•ื”ื™ื;
  • ื”ื™ื›ื•ืœืช ืœื™ืฆื•ืจ ื™ื™ืฉื•ืžื™ ืื™ื ื˜ืจื ื˜ ืื•ื ื™ื‘ืจืกืœื™ื™ื ืฉื ื™ืชืŸ ืœื”ืคืขื™ืœ ื’ื ื‘ื“ื ื• ื•ื’ื ื‘ื“ืคื“ืคืŸ ืื™ื ื˜ืจื ื˜ ืจื’ื™ืœ;
  • ื ื•ื›ื—ื•ืช ืฉืœ ืกื˜ ืกื˜ื ื“ืจื˜ื™ ืฉืœ ืžื•ื“ื•ืœื™ื, ืฉื”ืฉื™ืžื•ืฉ ื‘ื”ื ืื™ื ื• ืžืฆืจื™ืš ื”ืชืงืฉืจื•ืช ืœืชืœื•ืช ื—ื™ืฆื•ื ื™ืช. ืžื•ื“ื•ืœื™ื ืžืื•ืกืฃ ื”ืกื˜ื ื“ืจื˜ื™ื ืขื‘ืจื• ื‘ื™ืงื•ืจืช ื•ื‘ื“ื™ืงื•ืช ืชืื™ืžื•ืช ื ื•ืกืคื•ืช;
  • ื‘ื ื•ืกืฃ ืœื–ืžืŸ ื”ืจื™ืฆื”, ืคืœื˜ืคื•ืจืžืช Deno ืคื•ืขืœืช ื’ื ื›ืžื ื”ืœืช ื—ื‘ื™ืœื•ืช ื•ืžืืคืฉืจืช ืœืš ืœื’ืฉืช ืœืžื•ื“ื•ืœื™ื ืœืคื™ ื›ืชื•ื‘ืช URL ื‘ืชื•ืš ื”ืงื•ื“. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื˜ืขื•ืŸ ืžื•ื“ื•ืœ, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ื‘ืงื•ื“ "ื™ื‘ื•ื * ื‘ืชื•ืจ ื™ื•ืžืŸ ืžืชื•ืš "https://deno.land/std/log/mod.ts". ืงื‘ืฆื™ื ืฉื”ื•ืจื“ื• ืžืฉืจืชื™ื ื—ื™ืฆื•ื ื™ื™ื ื“ืจืš URL ื ืฉืžืจื™ื ื‘ืžื˜ืžื•ืŸ. ื”ืชื—ื™ื™ื‘ื•ืช ืœื’ืจืกืื•ืช ืžื•ื“ื•ืœ ื ืงื‘ืขืช ืขืœ ื™ื“ื™ ืฆื™ื•ืŸ ืžืกืคืจื™ ื’ืจืกืื•ืช ื‘ืชื•ืš ื›ืชื•ื‘ืช ื”ืืชืจ, ืœื“ื•ื’ืžื”, "https://unpkg.com/[ืžื•ื’ืŸ ื‘ื“ื•ื"ืœ]/dist/liltest.js";
  • ื”ืžื‘ื ื” ื›ื•ืœืœ ืžืขืจื›ืช ืžืฉื•ืœื‘ืช ืœื‘ื“ื™ืงืช ืชืœื•ืช (ืคืงื•ื“ืช "deno info") ื•ื›ืœื™ ืขื–ืจ ืœืขื™ืฆื•ื‘ ืงื•ื“ (deno fmt);
  • ื ื™ืชืŸ ืœืฉืœื‘ ืืช ื›ืœ ืกืงืจื™ืคื˜ื™ ื”ื™ื™ืฉื•ื ืœืงื•ื‘ืฅ JavaScript ืื—ื“.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”