Stavební kameny Deno

Začněme tím, co je Deno?

Deno je bezpečné běhové prostředí TypeScript postavené na V8, běhovém modulu Google pro JavaScript. Speciální funkcí, která jej odlišuje od Node, je to, že po vybalení podporuje TypeScript.

Architektura Deno

Pojďme se nyní ponořit do jeho architektury, jak Deno funguje.

Tři stavební kameny Deno jsou:

  • Rust je multiparadigmatický programovací jazyk zaměřený na výkon a bezpečnost, zejména bezpečnou souběžnost. Rust je syntakticky podobný C++, ale poskytuje bezpečnost paměti bez použití garbage collection.
  • Tokio je událostmi řízená, neblokující I/O platforma pro psaní asynchronních aplikací s programovacím jazykem Rust. Na vysoké úrovni poskytuje několik hlavních komponent:Nástroje pro práci s asynchronními úlohami, včetně synchronizačních primitiv a kanálů a časových limitů, zpoždění a intervalů.
  • V8 je open source vysoce výkonný JavaScript a WebAssembly engine společnosti Google napsaný v C++. Používá se v prohlížeči Chrome k převodu programovacího jazyka do strojového jazyka a zobrazení zkrášlené verze v prohlížeči.

Deno Runtime

Náš kód píšeme v JavaScriptu nebo TypeScriptu. Pokud jsme psali v TypeScriptu, pak to vyhovuje, aby se nejprve převedl na JavaScript, ale pokud je náš kód v JavaScriptu, pak zcela ignoruje proces kompilace a převede se do V8. Jako toto Deno, začněte zpracovávat.

Proces je jednoduše spuštěný program. Nyní Deno používá Rusty_V8, program napsaný lidmi z Dena. Pamatujte, že Deno je napsáno v Rustu. Ale proč Rust, na rozdíl od Node, který je napsán v C++, C. Vybrali si Rust, protože má opravdu dobrou bezpečnost, pokud jde o paměť.

Deno zpracuje kód a řekne v8 engine, aby provedl všechny úkoly Javascriptu, ale pokud existuje něco mimo JS, pošlete to do Rust, jako je přístupový soubor nebo nastavte časový limit. Můžeme si to představit tak, že přední část Deno je JavaScript nebo TypeScript a zadní část je rez.

Teď je tu poslední část. Nyní potřebujeme asynchronní IO.

Co to znamená?

No, předstírejme, že zadáváme požadavek, nastavujeme časový limit požadavku, abychom mohli na pozadí spouštět více věcí, více operací současně. Potřebujeme něco, čemu se říká smyčka událostí. Je to způsob, jak spouštět události na pozadí. A tady přichází na řadu Tokio Library. Tokio Library je rezavý projekt, rezavá knihovna, která nám umožňuje používat to, čemu říkáme hrozba a dělníky, aby dělali práci primárně za nás.

Co se tedy stane, když spustíme náš kód JavaScript, pokud někdy použijeme něco, co není striktně JavaScript, jako je Deno API, nebo spustíme cokoli s jmenným prostorem Deno nebo dokonce něco jako přidat posluchač události nebo nastavit časový limit. To vše jsou API, která nám umožňují mluvit s Rustem. A poté, jakmile pracovník, kterého používáme, Tokio dokončí úkol, pošle jej zpět celou cestu do rusty_V8, který nám umožňuje komunikovat s enginem a poté jej vrátí zpět do našeho JavaScriptového světa.

To je ono, tak web funguje. Tak funguje Deno.

Reference

Zero to Mastery Academy