Programování

Co je Deno? „Lepší“ Node.js

Pokud máte rádi Node.js, ale ne jeho správce balíčků npm, nebo chcete bezpečnější běhové prostředí JavaScriptu než Node.js, můžete najít nový open source projekt Deno, který vás zajímá (slovo Deno je přesmyčka Node). Na druhou stranu, pokud používáte Node.js ve výrobě, není tu nic k vidění, pokračujte - Deno je stále „velmi ve vývoji“.

Deno je program pro spouštění kódu JavaScript a TypeScript mimo prohlížeč. Jedná se o nejnovější úsilí v čele s Ryanem Dahlem, který založil projekt Node.js v roce 2009, a jedná se o pokus o reimagine Node.js ve světle pokroku v JavaScriptu od roku 2009, včetně kompilátoru TypeScript. Stejně jako Node.js, Deno je v podstatě prostředí kolem Java V8 Java Engine, i když na rozdíl od Node.js obsahuje ve svém spustitelném obrázku kompilátor TypeScript.

Deno a pokročilý JavaScript

V roce 2009 JavaScript podle Dahla postrádal několik funkcí, které by byly pro Node.js užitečné. Několik z nich bylo v průběhu let přidáno do JavaScriptu jako součást standardu ECMAScript (ES) a TypeScript se zabýval několika dalšími.

JavaScript měl události a zpětná volání v podstatě navždy, ale mohou vést k poměrně komplikovanému kódu, zvláště když chcete řetězit asynchronní akce. Sliby učinit syntaxi trochu čitelnější. A slib je vrácený objekt představující případné dokončení nebo selhání asynchronní operace, ke kterému můžete připojit zpětná volání, na rozdíl od předávání zpětných volání do funkce. Deklarace funkce asynchronní dále zjednodušuje syntaxi a umožňuje vám ji používat čekat ve funkci pozastavit neblokujícím způsobem, dokud se slib nevyrovná.

Když byl vytvořen Node.js, de facto standard pro moduly JavaScript byl CommonJS, což podporuje npm. Od té doby výbor ECMAScript oficiálně požehnal jiný standard, ES Modules, což podporuje jspm. Deno podporuje moduly ES.

Zadaná pole jsou ES6 API pro zpracování binárních dat, něco, co Node.js mohl použít; nedostatek podpory binárních dat vedl k některým problémům s designem Node.js. Deno používá typovaná pole, když potřebuje manipulovat se surovými binárními daty. Node.js nyní podporuje zadaná pole pro uživatelský kód.

TypeScript je typová nadmnožina JavaScriptu, která se kompiluje s prostým JavaScriptem (ES3 nebo vyšší; je konfigurovatelný). TypeScript přidává do JavaScriptu volitelné typy, třídy a moduly a podporuje nástroje pro rozsáhlé aplikace JavaScriptu. (Anders Hejlsberg to nazývá „JavaScript, který se rozšiřuje.“) Jak již bylo zmíněno dříve, Deno obsahuje jako součást svého runtime obrázek kompilátoru TypeScript. Pokud předáte Deno soubor TypeScript, nejprve jej zkompiluje do JavaScriptu a poté jej předá motoru V8.

Node.js designové nedostatky

Podle Dahla, který koneckonců navrhoval jak Node.js, tak Deno, Node.js trpí třemi hlavními problémy s designem:

  • špatně navržený modulový systém s centralizovanou distribucí;
  • spousta starších API, která musí být podporována;
  • a nedostatek zabezpečení.

Deno opravuje všechny tři problémy.

Deno bezpečné provedení

Způsob, jakým Deno zlepšuje zabezpečení přes Node.js, je jednoduchý: Ve výchozím nastavení Deno nedovolí programu přistupovat k disku, síti, podprocesům nebo proměnným prostředí. Pokud potřebujete některou z těchto možností povolit, můžete se přihlásit pomocí příznaku příkazového řádku, který může být například tak zrnitý, jak se vám líbí --allow-read = / tmp nebo --allow-net = google.com. Další vylepšení zabezpečení v Deno spočívá v tom, že vždy umírá na nezachycené chyby, na rozdíl od Node.js, což umožní provádění po nezachycené chybě s výsledky, které nemusí být předvídatelné.

Deno moduly

V Node.js načítáte moduly CommonJS pomocí vyžadovat klíčové slovo a všichni, standardní i třetí strany, implicitně pocházejí z npmjs.com. V Deno načítáte moduly ES pomocí import klíčové slovo a výslovně uveďte URL. Například:

importovat * jako protokol z „//deno.land/std/log/mod.ts“;

Moduly Deno lze hostovat kdekoli - pro moduly třetích stran neexistuje centralizované úložiště. Moduly jsou navíc vždy ukládány do mezipaměti a kompilovány místně a nejsou aktualizovány, pokud výslovně nepožádáte o obnovení. Proto byste měli být schopni spouštět programy Deno, které jsou již ve vašem notebooku, pokud byly všechny importy vyřešeny jednou, i když jste v letadle bez připojení.

Deno má centralizovanou sbírku Standard moduly, které nemají externí závislosti a jsou kontrolovány jádrovým týmem Deno; žije na serveru deno.land. Kolekce modulů deno_std je volným portem standardní knihovny Go.

Za výběrem modelu pro knihovnu je trochu historie. Dahl napsal svůj prototyp Dena primárně v jazyce Go, ale objevil potenciální konflikty mezi sběrateli odpadků v Go a V8. On a jeho spolupracovníci poté přepsali Deno správný na V8, Rust a Rust asynchronní I / O balíček Tokio. Implementovali standardní knihovnu Deno v TypeScript.

V tomto okamžiku je Deno rozumné a zábavné prostředí pro vytváření malých soukromých skriptovacích projektů v TypeScriptu. Podle Dahla Deno nikdy skutečně neovlivní úspěch Node.js. Jakmile však Deno dosáhne verze 1.0, může se stát životaschopnou volbou pro vytváření větších projektů.

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