Programovanie

Čo je Deno? „Lepší“ súbor Node.js

Ak máte radi Node.js, ale nie jeho správcu balíkov npm, alebo chcete bezpečnejšie runtime prostredie JavaScriptu ako Node.js, môžete nájsť zaujímavý nový open source projekt Deno (slovo Deno je anagramom Node). Na druhej strane, ak používate Node.js vo výrobe, nie je tu čo vidieť, pokračujte - Deno je stále „veľmi vo vývoji“.

Deno je program na spúšťanie kódu JavaScript a TypeScript mimo prehliadača. Je to posledné úsilie v čele s Ryanom Dahlom, ktorý založil projekt Node.js v roku 2009, a ide o pokus o opätovné predstavenie Node.js vo svetle pokroku v JavaScripte od roku 2009, vrátane kompilátora TypeScript. Rovnako ako Node.js, aj Deno je v podstate shell okolo JavaScriptu Google V8, aj keď na rozdiel od Node.js obsahuje vo svojom spustiteľnom obrázku kompilátor TypeScript.

Deno a pokročilý JavaScript

Podľa Dahla v roku 2009 JavaScriptu chýbalo niekoľko funkcií, ktoré by boli užitočné pre Node.js. Niektoré z nich boli v priebehu rokov pridané do JavaScriptu ako súčasť štandardu ECMAScript (ES) a TypeScript sa venoval ešte niekoľkým.

JavaScript mal udalosti a spätné volania v podstate navždy, ale môžu viesť k pomerne komplikovanému kódu, najmä ak chcete reťaziť asynchrónne akcie. Sľuby urobiť syntax trochu čitateľnejšou. A sľub je vrátený objekt predstavujúci prípadné dokončenie alebo zlyhanie asynchrónnej operácie, ku ktorej môžete pripojiť spätné volania, na rozdiel od odovzdávania spätných volaní do funkcie. Deklarovanie funkcie async ďalej zjednodušuje syntax a umožňuje vám používať čakať vo funkcii neblokujúcim spôsobom pozastaviť, kým sa sľub vyrovná.

Keď bol vytvorený Node.js, de facto štandardom pre moduly JavaScriptu bol CommonJS, čo podporuje npm. Od tej doby výbor ECMAScript oficiálne požehnal iný štandard, ES Modules, čo podporuje jspm. Deno podporuje moduly ES.

Zadané polia sú rozhraním ES6 API na prácu s binárnymi údajmi, čo mohol použiť Node.js; nedostatok podpory binárnych údajov viedol k niektorým problémom s dizajnom Node.js. Deno používa typizované polia, keď potrebuje manipulovať so surovými binárnymi dátami. Node.js teraz podporuje zadané polia pre užívateľský kód.

TypeScript je napísaná nadmnožina JavaScriptu, ktorá sa kompiluje s obyčajným JavaScriptom (ES3 alebo vyšším; je konfigurovateľný). TypeScript pridáva do JavaScriptu voliteľné typy, triedy a moduly a podporuje nástroje pre rozsiahle aplikácie JavaScriptu. (Anders Hejlsberg to nazýva „JavaScript, ktorý sa zväčšuje.“) Ako už bolo spomenuté, Deno obsahuje ako súčasť svojho runtime obrázok kompilátora TypeScript. Ak odovzdáte Deno súbor TypeScript, najskôr ho skompiluje do JavaScriptu a potom ho odovzdá motoru V8.

Nedostatky v dizajne Node.js

Podľa Dahla, ktorý napokon navrhol Node.js aj Deno, Node.js trpí tromi hlavnými problémami s dizajnom:

  • zle navrhnutý modulový systém s centralizovanou distribúciou;
  • veľa starších rozhraní API, ktoré musia byť podporované;
  • a nedostatok bezpečnosti.

Deno opravuje všetky tri problémy.

Deno bezpečné prevedenie

Spôsob, akým Deno zvyšuje zabezpečenie nad Node.js, je jednoduchý: V predvolenom nastavení Deno neumožní programu prístup k disku, sieti, podprocesom alebo premenným prostredia. Ak potrebujete čokoľvek z toho povoliť, môžete sa prihlásiť pomocou príznaku príkazového riadku, ktorý môže byť napríklad taký zrnitý, ako sa vám páči. --allow-read = / tmp alebo --allow-net = google.com. Ďalším vylepšením zabezpečenia v Dene je, že vždy zomiera na nevychytané chyby, na rozdiel od Node.js, ktoré umožnia spustenie procesu po nevychytanej chybe s výsledkami, ktoré nemusia byť predvídateľné.

Deno moduly

V Node.js načítate moduly CommonJS pomocou súboru vyžadovať kľúčové slovo a všetky, štandardné aj tretie, implicitne pochádzajú z npmjs.com. V Deno načítate moduly ES pomocou dovoz kľúčové slovo a výslovne uviesť URL. Napríklad:

importovať * ako protokol z „//deno.land/std/log/mod.ts“;

Moduly Deno môžu byť hostené kdekoľvek - pre moduly tretích strán neexistuje centralizované úložisko. Moduly sa navyše vždy ukladajú do medzipamäte a kompilujú sa lokálne a neaktualizujú sa, pokiaľ výslovne nepožiadate o obnovenie. Preto by ste mali byť schopní spustiť programy Deno, ktoré už máte vo svojom notebooku, pokiaľ boli všetky importy vyriešené raz, aj keď ste v lietadle bez pripojenia.

Deno má centralizovanú zbierku súborov štandard moduly, ktoré nemajú externé závislosti a sú kontrolované jadrovým tímom Deno; žije na serveri deno.land. Kolekcia modulov deno_std je voľný port štandardnej knižnice Go.

Za výberom modelu pre knižnicu je trochu histórie. Dahl napísal svoj prototyp Dena primárne v jazyku Go, ale objavil potenciálne konflikty medzi smetiarmi v Go a V8. On a jeho spolupracovníci potom prepísali samotného Dena na V8, Rust a Rust asynchrónny I / O balíček Tokio. Implementovali štandardnú knižnicu Deno v stroji TypeScript.

V tomto okamihu je Deno rozumné a zábavné prostredie na vytváranie malých súkromných skriptovacích projektov v stroji TypeScript. Podľa Dahla Deno nikdy skutočne neovplyvní úspech Node.js. Akonáhle však Deno dosiahne verziu 1.0, môže sa stať životaschopnou voľbou pre vytváranie väčších projektov.

$config[zx-auto] not found$config[zx-overlay] not found