Movatterモバイル変換


[0]ホーム

URL:


Vés al contingut
Viquipèdial'Enciclopèdia Lliure
Cerca

Deno

De la Viquipèdia, l'enciclopèdia lliure
Deno
Modifica el valor a Wikidata

Tipussistema en temps d'execucióModifica el valor a Wikidata
Basat enV8Modifica el valor a Wikidata
Versió inicial13 maig 2018Modifica el valor a Wikidata
Versió estable
2.2.4(14 març 2025)Modifica el valor a Wikidata
Llicènciallicència MITModifica el valor a Wikidata
EpònimNode.jsModifica el valor a Wikidata
Característiques tècniques
Sistema operatiuLinux,macOS,Microsoft Windows iFreeBSDModifica el valor a Wikidata
Escrit enRust,TypeScript,JavaScript iC++Modifica el valor a Wikidata
Equip
Desenvolupador(s)Ryan DahlModifica el valor a Wikidata
Més informació
Lloc webdeno.com (anglès)Modifica el valor a Wikidata
BlogBlog oficialModifica el valor a Wikidata
Stack ExchangeEtiquetaModifica el valor a Wikidata
Guia d'usuariGuia d'usuariModifica el valor a Wikidata

GitHub: denoland
X: deno_landMastodon: deno_land@fosstodon.orgYoutube: deno_landYoutube (canal): UCqC2G2M-rg4fzg1esKFLFIwModifica el valor a Wikidata

Deno és unsistema en temps d'execució per aJavascript iTypeScript, on està basat en el motor de JavaScriptV8 i en el llenguatge de programació Rust. Creat per Ryan Dahl, creador original de NODE.JS, i està centrat en la seguretat i productivitat.[1] Va ser anunciat per Dahl en 2018 durant la seva xerrada "Coses de les quals em penedeixo sobre NODE.JS".[2] Deno Explícitament pren la funció de tots dos runtime i elsistema de paquets dins d'un mateix executable, en comptes de requerir un programa per a l'administració de paquets per separat.[3][4]

Història

[modifica]

Deno va ser anunciat en JSConf UE 2018 per Ryan Dahl en la seva xerrada "10 coses que m'alteren sobre NODE.JS".[2] En la seva xerrada, Ryan va esmentar els seus remordiments sobre les decisions de disseny inicials amb NODE.JS, centrant la seva elecció per no utilitzarpromeses en el disseny de l'API, ús de sistema de construcció antiquat GYP, node_modules i package.json

Finalment va presentar el prototip de Deno, buscant fer les crides al sistema a través de pas de missatges amb eines de serialització com araProtocol Buffers, i proporcionar banderes de línia d'ordres per a control d'accés.

Deno va ser inicialment escrit enGo i utilitzatProtocol_Buffers per serialització entre els costats privilegiats (Go, amb accés de trucada de sistema) i no-privilegiat (V8).[5] Així i tot, Go va ser aviat reemplaçat perRust a causa de preocupacions per double runtime i lamemòria brossa.[6] Tokio és introduït en lloc de libuv com la plataforma conduïda per esdeveniments (event drive) asíncrona, i s'adoptaFlatBuffers per a una serialització i des-serialització més ràpida "Zero Copy" però més tard a l'agost 2019, FlatBuffers era finalment tret després publicats els benchmarks que intervenen una significativa sobrecàrrega de la serialització a l'abril el 2019.[7][8][9][10]

Una l'estil de la biblioteca estàndard de Go, va ser creada al novembre 2018 per proporcionar una extensa quantitat d'utilitats i eines, parcialment solucionant el problema de NODE.JS de l'explosió de l'arbre de dependències.[11]

El Deno 1.0 oficial va ser alliberat el 13 de maig de 2020.[12]

Visió general

[modifica]

Deno busca ser un entorn descripting productiu i segur per al programador modern. Similar a NODE.JS, Deno emfatitza enarquitectura manejada per esdeveniments, proveint un conjunt d'utilitats d'entrada sortida IO no bloquejant més de les seves versions bloquejant. Deno pot ser usat per crearservidors web, dur a terme computació científica, etc.

Comparació amb NODE.JS

[modifica]

Deno I NODE.JS és tots dos un runtime, basat en el motor de JavaScriptv8 de Google, el mateix motor utilitzat enGoogle Chrome. Tots dos tenenbucles d'esdeveniments i ofereixan unainterfície de linia de comandament per córrer scripts i més una àmplia gamma d'utilitats de sistema.

Les diferències de Deno amb Node.js als següents aspectes:[3]

  • Fa servir el mòdul ES com el sistema de mòdul per omissió, en comptes de CommonJS.
  • UtilitzaURLs per carregar dependències locals o remotes, similar alsnavegadors.
  • Inclou un gestor de paquets intern per a la baixada de recursos, sense necessitat deNPM.
  • SuportaTypeScript nativament usant un compilador TypeScript capturat (snapshotted TypeScript Compiler).
  • Té una millor compatibilitat amb navegadors amb una àmplia gamma d'API Web.
  • Permet controlar el sistema de fitxers i l'accés de xarxa per córrer codi en entorn de proves (Sandbox).
  • Redefinició de l'API per utilitzarpromeses,ES6 i característiques TypeScript.
  • Minimitza la mida de l'API bàsica, mentre proporciona una biblioteca estàndard gran sense dependències externes.
  • Utilitza canals per al pas de missatges per invocar APIs de sistema amb privilegi i utilitzar lligadures.

Exemple

[modifica]

La següent executa un script bàsic de Deno sense cap permís de lectura/escriptura/xarxa (modesandbox):

denorunmain.ts

Banderes explícites són requerides per exposar permís corresponent:

denorun--allow-read--allow-netmain.ts

Per inspeccionar l'arbre de dependència de l'script, utilitzeu la subcomandainfo:

denoinfomain.ts

Unprogramari Hola món bàsic a Deno s'assembla, és una cosa així:

console.log("Hola món");

Deno proporciona un espai de nom global per a la majoria de les APIs de deno que no estan disponibles en el navegador. Un programaCat deUnix podria ser implementat com segueix:

/* cat.ts *//* Deno APIs are exposed through the `Deno` namespace. */const{stdout,open,copy,args}=Deno;// Top-level await is supportedfor(leti=0;i<args.length;i++){constfilename=args[i];// Obtains command-line arguments.constfile=awaitopen(filename);// Opens the corresponding file for reading.awaitcopy(stdout,file);// Performs a zero-copy asynchronous copy from `file` to `stdout`.}

La funcióDeno.copy de dalt treballa de manera similar com les IO de.Copy, onstdout (sortida estàndard) és elWriter i file és elReader.Per córrer aquest programa, necessitem proporcionar el permís de lectura delsistema de fitxers:

denorun--allow-readcat.tsmyfile

El següent script Deno implementa unservidor HTTP bàsic:

// Imports `serve` from the remote Deno standard library, using URL.import{serve}from"https://deno.land/std@v0.21.0/http/server.ts";// `serve` function returns an asynchronous iterator, yielding a stream of requestsforawait(constreqofserve({port:8000})){req.respond({body:"Hello World\n"});}

Quan corrent aquest programa, Deno automàticament descàrrega i cau els fitxers de biblioteca estàndards remots i compilar el codi.

De manera semblant, podem córrer un guió de biblioteca estàndard (com unservidor de fitxers) directament sense explícitament descarregant, per proporcionar l'URL quan entrada filename (-Unes voltes sobre tots els permisos):

$denorun-Ahttps://deno.land/std/http/file_server.tsDownload https://deno.land/std/http/file_server.tsCompile https://deno.land/std/http/file_server.ts...HTTP server listening on http://0.0.0.0:4500/

Referències

[modifica]
  1. «Deno: Secure V8 TypeScript Runtime from Original Node.js Creator» (en anglès). [Consulta: 21 agost 2020].
  2. 2,02,1Error: hi hatítol ourl, però calen tots dos paràmetres.JSConf. «», 06-06-2018. [Consulta: 17 maig 2019].
  3. 3,03,1«Deno». Arxivat de l'original el 2020-04-15. [Consulta: 21 agost 2020].
  4. Krill, Paul. «Ryan Dahl's Node.js regrets lead to Deno» (en anglès), 21-06-2018. [Consulta: 21 agost 2020].
  5. «denoland/deno» (en anglès). [Consulta: 21 agost 2020].
  6. «Suggestion: Look into porting to Rust and using Tokio · Issue #205 · denoland/deno» (en anglès). [Consulta: 21 agost 2020].
  7. «Tokio». [Consulta: 21 agost 2020].
  8. «Protobuf seems like a lot of overhead for this use case? · Issue #269 · denoland/deno» (en anglès). [Consulta: 21 agost 2020].
  9. «Remove flatbuffers by ry · Pull Request #2818 · denoland/deno» (en anglès). [Consulta: 21 agost 2020].
  10. «Replace flatbuffers · Issue #2121 · denoland/deno» (en anglès). [Consulta: 21 agost 2020].
  11. «denoland/deno_std», 19-08-2020. [Consulta: 21 agost 2020].
  12. «Deno 1.0 | Deno». [Consulta: 21 agost 2020].
Obtingut de «https://ca.wikipedia.org/w/index.php?title=Deno&oldid=33784603»
Categoria:
Categoria oculta:

[8]ページ先頭

©2009-2025 Movatter.jp