Deno (software) - Deno (software)
![]() | tento článek příliš spoléhá na Reference na primární zdroje.Srpna 2019) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
![]() | |
Původní autoři | Ryan Dahl |
---|---|
Vývojáři | Rozličný |
První vydání | 13. května 2018[1] |
Stabilní uvolnění | 1.5.4 / 23. listopadu 2020[2] |
Úložiště | github |
Napsáno | Strojopis, JavaScript, Rez, C ++ |
Operační systém | Linux, Operační Systém Mac, Microsoft Windows |
Typ | Běhové prostředí |
Licence | Licence MIT[3][4] |
webová stránka | deno![]() |
Deno je runtime pro JavaScript a Strojopis to je založeno na V8 JavaScriptový motor a Rez programovací jazyk. Vytvořil Ryan Dahl, původní tvůrce Node.js a zaměřuje se na produktivitu.[5] Oznámil to Dahl v roce 2018 během své přednášky „10 věcí, které lituji ohledně Node.js“.[6] Deno se výslovně ujímá role runtime i správce balíčků do jednoho spustitelný, spíše než vyžadovat samostatný program pro správu balíčků.[7][8]
Dějiny
Deno oznámil na JSConf EU 2018 Ryan Dahl ve svém projevu „10 věcí, kterých lituji nad Node.js“.[6] Ve své přednášce Ryan zmínil své politování nad počátečními rozhodnutími o designu Node.js, se zaměřením na jeho možnosti nepoužívat Sliby v API design, použití staršího stavebního systému GYP, node_modules a package.json, vynechání přípon souborů, magické rozlišení modulu s index.js a rozbití sandboxovaného prostředí V8.[9] Nakonec představil prototyp Deno, jehož cílem bylo dosáhnout vazeb systémových volání prostřednictvím předávání zpráv pomocí nástrojů pro serializaci, jako je Vyrovnávací paměti protokolu a poskytnout příznaky příkazového řádku pro Řízení přístupu.
Deno byl původně napsán v Jít a použité Vyrovnávací paměti protokolu pro serializaci mezi privilegovanými (Go, s přístupem k systémovým voláním) a neprivilegovanými (V8) stranami.[10] Nicméně, Go byl brzy nahrazen Rez kvůli obavám z dvojitého běhu a odvoz odpadu tlak.[11] Tokio je představeno místo libuv jako asynchronní platforma řízená událostmi,[12] a Flatbuffery je přijato pro rychlejší serializaci a deserializaci „nulové kopie“[13] ale později v srpnu 2019 byly FlatBuffers nakonec odstraněny[14] po zveřejnění referenčních hodnot, které měřily významnou režii serializace v dubnu 2019.[15]
Standardní knihovna, po vzoru standardní knihovny Go, byla vytvořena v listopadu 2018, aby poskytla rozsáhlé nástroje a nástroje, které částečně řeší problém výbuchu stromu závislostí Node.js.[16]
Oficiální Deno 1.0 byl vydán 13. května 2020.[17]
Přehled
Deno si klade za cíl být produktivní skriptování prostředí pro moderního programátora.[7] Podobně jako Node.js zdůrazňuje Deno architektura řízená událostmi, poskytující sadu neblokující základní nástroje IO spolu s jejich blokujícími verzemi. Deno lze použít k vytvoření webové servery, provádět vědecké výpočty atd. Deno je open source software pod Licence MIT.[18]
Srovnání s Node.js
Deno a Node.js jsou oba runtime postavené na Google V8 JavaScript engine, stejný motor použitý v Google Chrome. Oba mají interní smyčky událostí a poskytnout rozhraní příkazového řádku pro spouštění skriptů a širokou škálu systémových nástrojů.
Deno se od Node.js odchyluje hlavně v následujících aspektech:[7]
- Místo výchozího systému modulů použije modul ES CommonJS.
- Použití URL pro načítání místních nebo vzdálených závislostí, podobně jako prohlížeče.
- Zahrnuje integrovaného správce balíčků pro načítání prostředků, takže není třeba NPM.
- Podporuje Strojopis po vybalení z krabice pomocí momentkového TypeScript překladač s mechanismy ukládání do mezipaměti.
- Usiluje o lepší kompatibilitu s prohlížeči s širokou škálou webových rozhraní API.
- Umožňuje souborový systém a přístup k síti za účelem spuštění izolovaného kódu.
- Redesigns API to utilize Sliby, ES6 a funkce TypeScript.
- Minimalizuje velikost jádra API a zároveň poskytuje velkou standardní knihovnu bez externích závislostí.
- Používání kanálů pro předávání zpráv k vyvolání privilegovaných systémových API a použití vazeb.
Příklad
Spustí se základní skript Deno bez oprávnění systému souborů nebo sítě (pískoviště režim):
deno run main.ts
K povolení oprávnění jsou nutné explicitní příznaky:
deno run --allow-read --allow-net main.ts
Chcete-li zkontrolovat strom závislostí skriptu, použijte informace
dílčí příkaz:
deno info main.ts
Základní ahoj-světový program v Deno vypadá stejně jako v Node.js:
řídicí panel.log("Ahoj světe");
Globální Deno
Obor názvů odhaluje rozhraní API, která nejsou k dispozici v prohlížeči. A Unix kočičí program lze implementovat takto:
/ * kat.ts * // * Deno API jsou vystavena prostřednictvím oboru názvů `Deno`. * /konst { stdout, otevřeno, kopírovat, args } = Deno;// Je podporováno čekání na nejvyšší úrovnipro (nechat i = 0; i < args.délka; i++) { konst název souboru = args[i]; // Získá argumenty příkazového řádku. konst soubor = čekat otevřeno(název souboru); // Otevře příslušný soubor ke čtení. čekat kopírovat(soubor, stdout); // Provede asynchronní kopírování s nulovou kopií ze `souboru` do` stdout`.}
The Deno. Kopie
výše použitá funkce funguje podobně jako Go io.Copy
, kde stdout
(standardní výstup ) je cíl Spisovatel
, a soubor
je zdroj Čtenář
Chcete-li spustit tento program, musíme povolit oprávnění ke čtení souborový systém:
deno run --allow-read cat.ts myfile
Následující skript Deno implementuje základní HTTP server:
// Importuje `sloužit` ze vzdálené standardní knihovny Deno pomocí adresy URL.import { sloužit } z „https://deno.land/[email protected]/http/server.ts“;// funkce `sloužit` vrací asynchronní iterátor, čímž získá proud požadavkůpro čekat (konst požadavek z sloužit({ přístav: 8000 })) { požadavek.reagovat({ tělo: „Ahoj světe n“ });}
Při spuštění tohoto programu Deno automaticky stáhne a uloží do mezipaměti vzdálené standardní soubory knihovny a zkompiluje kód. Podobně můžeme spustit standardní skript knihovny (například souborový server ) přímo bez výslovného stahování poskytnutím adresy URL jako vstupního názvu souboru (-A
zapne všechna oprávnění):
$ deno run -A https://deno.land/std/http/file_server.tsStáhněte si https://deno.land/std/http/file_server.tsKompilace https://deno.land/std/http/file_server.ts...HTTP server poslouchá na http://0.0.0.0:4500/
Reference
- ^ „Přispěvatelé, denoland / deno, Github“. Citováno 5. července 2019.
- ^ „Vydání · denoland / deno“. Citováno 2020-11-23.
- ^ „deno / LICENCE u pána“. GitHub. Citováno 5. července 2019.
- ^ „Licence MIT“. Open Source Initiative. 17. září 2018. Citováno 17. září 2018.
- ^ „Deno: Secure V8 TypeScript Runtime od původního tvůrce Node.js“. InfoQ. Citováno 2019-05-17.
- ^ A b JSConf (06.06.2018), 10 věcí, kterých lituji nad Node.js - Ryan Dahl - JSConf EU 2018, vyvoláno 2019-05-17
- ^ A b C "Deno Manual". deno.land. Citováno 2019-05-17.
- ^ Paul Krill (2018-06-21). „Ryan Dahl Node.js lituje, že vedl k Deno“. InfoWorld.
- ^ Dahl, Ryan (06.06.2018). „Design errors in Node“ (PDF). Github.
- ^ „denoland / deno, větev“ golang"". Github.
- ^ „Návrh: Podívejte se na portování na Rust a používání Tokia“. GitHub.
- ^ „Tokio - asynchronní běh programovacího jazyka Rust“. Tokio.rs.
- ^ „Protobuf vypadá jako velká režie pro tento případ použití?“. Github.
- ^ „Odebrat flatbuffery“. GitHub.
- ^ „Replace flatbuffers“. GitHub.
- ^ "denoland / deno_std: standardní moduly deno". Github.
- ^ „Deno 1.0“. deno.land. Citováno 2020-05-14.
- ^ „Deno je připraven k výrobě“. InfoQ. Citováno 2020-07-01.