เป‚เบ„เบ‡เบเบฒเบ™ Deno เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก JavaScript เบ—เบตเปˆเบ›เบญเบ”เป„เบžเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบš Node.js

เบกเบตเปƒเบซเป‰ เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ„เบ‡เบเบฒเบ™ เป€เบ”เป‚เบ™ 0.33, เป€เบŠเบดเปˆเบ‡เบชเบฐเป€เบซเบ™เบตเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบš Node.js เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบšเบšเบชเบฐเปเบ•เบ™เป€เบฅเบ”เปƒเบ™ JavaScript เปเบฅเบฐ TypeScript เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบเบฑเบšเบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบš, เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ. Deno เปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ JavaScript V8, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™ Node.js เปเบฅเบฐเบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเป‚เบ„เบ‡เบเบฒเบ™ Chromium. เบฅเบฐเบซเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™ เปเบˆเบเบขเบฒเบเป‚เบ”เบ เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” MIT. เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบ Ryan Dahl (Ryan Dahl), เบœเบนเป‰เบชเป‰เบฒเบ‡เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก JavaScript เบ‚เบญเบ‡ Node.js.

เบซเบ™เบถเปˆเบ‡เปƒเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡ runtime เปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบš JavaScript เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ—เบตเปˆเบ›เบญเบ”เป„เบžเบเบงเปˆเบฒ. เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž, เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ V8 เป„เบ”เป‰เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™ Rust, เป€เบŠเบดเปˆเบ‡เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบซเบผเบฒเบเบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒ, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบฒเบเบซเบผเบฑเบ‡เบ—เบตเปˆเบšเปเปˆเป€เบชเบเบ„เปˆเบฒ, เบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบ•เบปเบงเบŠเบตเป‰ null, เปเบฅเบฐ buffer overruns. เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบ–เบทเบเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบ™เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบšเปเปˆเบชเบฐเบเบฑเบ”เบเบฑเป‰เบ™ Tokio, เบเบฑเบ‡เบ‚เบฝเบ™เปƒเบ™ Rust. Tokio เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ—เบตเปˆเบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™เป‚เบ”เบเป€เบซเบ”เบเบฒเบ™, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบซเบผเบฒเบ threading เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เปƒเบ™เบฎเบนเบšเปเบšเบš asynchronous.

เบ•เบปเป‰เบ™โ€‹เบ•เป เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐ Deno:

  • เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเปเบ™เปƒเบชเปˆเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž. เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป„เบŸเบฅเปŒ, เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เปเบฅเบฐเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเบฐเบ•เป‰เบญเบ‡เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡;
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปƒเบ™เบ•เบปเบงเบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒ TypeScript เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบ JavaScript;
  • Runtime เบกเบฒเปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบ”เบฝเบง ("deno"). เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป‚เบ”เบเปƒเบŠเป‰ Deno เบกเบฑเบ™เบžเบฝเบ‡เบžเป เบ”เบฒเบงเป‚เบซเบฅเบ” เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบตเบ‚เบญเบ‡เบ•เบปเบ™เบซเบ™เบถเปˆเบ‡เป„เบŸเบฅเปŒเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰, เบ›เบฐเบกเบฒเบ™ 10 MB เปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ”, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเบกเบตเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบžเบฒเบเบ™เบญเบเปเบฅเบฐเบšเปเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบžเบดเป€เบชเบ”เปƒเบ”เป†เปƒเบ™เบฅเบฐเบšเบปเบš;
  • เป€เบกเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป‚เบ„เบ‡เบเบฒเบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เป‚เบกเบ”เบนเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบขเบนเปˆ URL. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ„เบ‡เบเบฒเบ™ welcome.js, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ "deno https://deno.land/std/examples/welcome.js". เบฅเบฐเบซเบฑเบ”เบˆเบฒเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบžเบฒเบเบ™เบญเบเบ–เบทเบเบ”เบฒเบงเป‚เบซเบผเบ” เปเบฅเบฐเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบฅเบฐเบšเบปเบšเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™, เปเบ•เปˆเบšเปเปˆเป€เบ„เบตเบเบ–เบทเบเบญเบฑเบšเป€เบ”เบ”เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” (เบเบฒเบ™เบญเบฑเบšเป€เบ”เบ”เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบขเปˆเบฒเบ‡เบˆเบฐเปเบˆเป‰เบ‡เบ”เป‰เบงเบเบ—เบธเบ‡ โ€œ--เป‚เบซเบผเบ”เปƒเปเปˆโ€);
  • เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบœเปˆเบฒเบ™ HTTP เปƒเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™;
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบงเบฑเบšเบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ—เบฑเบ‡เปƒเบ™ Deno เปเบฅเบฐเปƒเบ™เบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเบ›เบปเบเบเบฐเบ•เบด;
  • เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเป€เบงเบฅเบฒเปเบฅเปˆเบ™, เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Deno เบเบฑเบ‡เป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ”เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เป‚เบกเบ”เบนเบ™เป‚เบ”เบ URL เบžเบฒเบเปƒเบ™เบฅเบฐเบซเบฑเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเป‚เบซเบฅเบ”เป‚เบกเบ”เบนเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบฅเบฐเบšเบธเบฅเบฐเบซเบฑเบ” "เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ * เป€เบ›เบฑเบ™เบšเบฑเบ™เบ—เบถเบเบˆเบฒเบ "https://deno.land/std/log/mod.ts". เป„เบŸเบฅเปŒเบ—เบตเปˆเบ”เบฒเบงเป‚เบซเบผเบ”เบˆเบฒเบเป€เบŠเบตเบšเป€เบงเบตเบžเบฒเบเบ™เบญเบเบœเปˆเบฒเบ™ URL เปเบกเปˆเบ™เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ. เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบเบฑเบšเบฎเบธเปˆเบ™เป‚เบกเบ”เบนเบ™เปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบเบฒเบ™เบฅเบฐเบšเบธเบ•เบปเบงเป€เบฅเบเป€เบงเบตเบŠเบฑเบ™เบžเบฒเบเปƒเบ™ URL, เบ•เบปเบงเบขเปˆเบฒเบ‡, "https://unpkg.com/[email protected]/dist/lilttest.js";
  • เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ›เบฐเบเบญเบšเบกเบตเบฅเบฐเบšเบปเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปเบšเบšเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™ (เบ„เปเบฒเบชเบฑเปˆเบ‡ "เบ‚เปเป‰เบกเบนเบ™ deno") เปเบฅเบฐเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเบฅเบฐเบซเบฑเบ” (deno fmt).
  • เบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ เบชเบฐเป€เปœเบต เบŠเบธเบ”เบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเป„เบ”เป‰เบœเปˆเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰;
  • เบชเบฐเบ„เบฃเบดเบšเบ‚เบญเบ‡เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบฑเบ‡เปเบปเบ”เบชเบฒเบกเบฒเบ”เบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป€เบ›เบฑเบ™เป„เบŸเบฅเปŒ JavaScript เบ”เบฝเบง.

เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบ Node.js:

  • Deno เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰ npm package manager
    เปเบฅเบฐเบšเปเปˆเบ–เบทเบเบœเบนเบเบกเบฑเบ”เบเบฑเบš repositories, เป‚เบกเบ”เบนเบ™เบ–เบทเบเปเบเป‰เป„เบ‚เบœเปˆเบฒเบ™ URL เบซเบผเบทเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบŸเบฅเปŒ, เปเบฅเบฐเป‚เบกเบ”เบนเบ™เบ•เบปเบงเป€เบญเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบˆเบฑเบ”เปƒเบชเปˆเปƒเบ™เป€เบงเบฑเบšเป„เบŠเบ—เปŒเปƒเบ”เบเปเปˆเบ•เบฒเบก;

  • Deno เบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰ "package.json" เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป‚เบกเบ”เบนเบ™;
  • เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡ API, เบ—เบธเบเป†เบเบฒเบ™เบเบฐ เบ—เบณ asynchronous เปƒเบ™ Deno เบเบฑเบšเบ„เบทเบ™ เบ„เบณ เบชเบฑเบ™เบเบฒ;
  • Deno เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบ„เปเบฒเบ™เบดเบเบฒเบกเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบญเบฐเบ™เบธเบเบฒเบ”เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเปเบฒเบฅเบฑเบšเป„เบŸเบฅเปŒ, เบ•เบปเบงเปเบ›เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปเบฅเบฐเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก;
  • เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบเบฑเบš handlers เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบชเบดเป‰เบ™เบชเบธเบ”เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบ;
  • Deno เปƒเบŠเป‰เบฅเบฐเบšเบปเบšเป‚เบกเบ”เบนเบ™ ECMAScript เปเบฅเบฐเบšเปเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ require().

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™