際際滷

際際滷Share a Scribd company logo
Deno: lanagramma di Node
Francesco Sciuti
https://www.acadevmy.it/intro
Chi sono?
Developer per scelta e per passione,
amante di nerdaggini di ogni tipo
ed amante della condivisione del sapere!
Google Certi鍖ed Developer
Francesco Sciuti
https://www.acadevmy.it/intro
Software Factory
Francesco Sciuti
https://www.acadevmy.it/intro
Learning Factory
Francesco Sciuti
https://www.acadevmy.it/intro
Le tecnologie che prediligiamo
Francesco Sciuti
https://www.acadevmy.it/intro
Francesco Sciuti
https://www.acadevmy.it/intro
ma basta marchette e parliamo di...
Disclaimer: Non sono un drago su Node o un dino su Deno!
Cosa 竪 un JS Engine?
JS 竪 un linguaggio interpretato (quindi il codice non 竪
compilato prima dellesecuzione), quindi un JS
engine si prende il compito di farlo on the 鍖y.
In Google Chrome ad esempio questo avviene per
mezzo dellengine V8.
Francesco Sciuti
https://www.acadevmy.it/intro
Cosa 竪 un JS Runtime?
Linterazione con lengine JS avviene
attraverso un runtime environment, che si
occupa inoltre di mettere a disposizione tante
ulteriori funzionalit e caratteristiche al
linguaggio JS, come ad esempio le
innumerevoli API messe a disposizione.
I browser sono il runtime environment che
consentono questa interazione.
Francesco Sciuti
https://www.acadevmy.it/intro
Server-side JS Runtime = Node.js
Nel lontano 2009 arriva Node.js che introduce
un JS runtime environment per consentire
quindi di usare JS come linguaggio server,
dando accesso, ad esempio, al 鍖le system, alla
rete e ad altre cose che non sono consentite
nei browser web.
Francesco Sciuti
https://www.acadevmy.it/intro
Ryan Dahl ci ripensa?
Nel 2018 il creatore di Node.js, durante un talk
alla JSConf EU, parla di ci嘆 che avrebbe fatto
diversamente su Node e quindi degli errori
commessi in fase progettuale...e casualmente
presenta il nuovo progetto: Deno!
Francesco Sciuti
https://www.acadevmy.it/intro
Forse dopo aver lavorato in Go ha visto cose
super forti e ci ha ripensato! :D
Cosa non andava in Node.js?
Francesco Sciuti
https://www.acadevmy.it/intro
 Promises e Modern Features
Non 竪 nato (o non proprio) con il supporto nativo alle promises,
ed ancora la std library ne risente.
 Security
Node pu嘆 accedere indistintamente a tutte le chiamate di sistema,
come scrivere sul disco, accedere alla rete, etc...
 npm / node_modules
Centralizzazione, folder node_modules, con鍖gurazione via
package.json, etc...
 CommonJS
Nato con require via CommonJS.
 Build System
Utilizza GYP.
 Secure by default
 ES Modules
 Decentralized Packages
 TypeScript works natively
 Browser API
Deno cosa ha di 鍖go?
 Top level await
 Tool Chain
 Modern ES Features
 Single executable 鍖le
 Remote execution
 Testing facility
Francesco Sciuti
https://www.acadevmy.it/intro
Deno 竪 scritto in Rust/Tokio e TypeScript...gi per questa ragione per molti devs lo rende 鍖go!
Secure by default
Francesco Sciuti
https://www.acadevmy.it/intro
Secure by default
Deno ti consente di controllare con precisione a cosa
ha accesso il tuo programma.
Deno non consente di eseguire un
programma che tenta di accedere a
delle speci鍖che caratteristiche, senza
che lo si dichiari esplicitamente.
Deno difatti viene eseguito in una
sandbox, come farebbe il browser.
Francesco Sciuti
https://www.acadevmy.it/intro
 --allow-env
 --allow-hrtime
 --allow-net=<allow-net>
 --allow-plugin
 --allow-read=<allow-read>
 --allow-run
 --allow-write=<allow-write>
 --allow-all
Deno consente inoltre di controllare la granularit di
alcune autorizzazioni con le whitelist.
ES modules import syntax
Francesco Sciuti
https://www.acadevmy.it/intro
ES modules import syntax
Deno consente di importare dal Web utilizzando la sintassi degli ES
modules, proprio come lo standard propone.
 Memorizza nella cache le dipendenze dopo averle recuperate la prima volta;
 Le dipendenze possono essere condivise tra progetti;
 Importazione da path espliciti o url;
 Esplicita necessit di indicare le estensioni degli import.
Francesco Sciuti
https://www.acadevmy.it/intro
Decentralized Packages
Non 竪 presente alcuna centralizzazione dei packages, che possono
essere importati direttamente via url, senza passare da 鍖le di
con鍖gurazione o folder speci鍖ci.
Con Deno non si 竪 dipendenti ad un
servizio centralizzato come NPM ma
avremo la possibilit di importare da
qualunque url.
Francesco Sciuti
https://www.acadevmy.it/intro
 https://deno.land/std (Standard Library)
 https://deno.land/x (Third Party Module)
https://deno.land/x/MODULE_NAME@BRANCH/SCRIPT.ts
TypeScript works natively
https://stackover鍖ow.com/questions/53428120/deno-vs-ts-node-whats-the-difference
Francesco Sciuti
https://www.acadevmy.it/intro
TypeScript works natively
Deno supporta TypeScript by design.
Non 竪 necessario impostare o con鍖gurare nulla.
Puoi assolutamente scrivere il normale
codice JavaScript con Deno, ma se lo
desideri, puoi anche passare a TypeScript in
qualsiasi momento, poich辿 il compilatore
TypeScript 竪 integrato in Deno.
Francesco Sciuti
https://www.acadevmy.it/intro
Tool Chain
Francesco Sciuti
https://www.acadevmy.it/intro
Tool Chain
Una caratteristica molto interessante 竪 che
Deno porta con se molti tools che consentono
di essere pronto a tutto!
Deno mette tools a disposizione per:
 Formatting;
 Testing;
 Installing;
 Shell completition;
 Cache management;
 ...
Francesco Sciuti
https://www.acadevmy.it/intro
Modern ES Features
Francesco Sciuti
https://www.acadevmy.it/intro
Modern ES Features
Deno nasce in un momento storico diverso da Node e quindi porta
tante caratteristiche di un JavaScript moderno (come se non
bastasse gi TypeScript :D).
Francesco Sciuti
https://www.acadevmy.it/intro
Deno mette tools a disposizione per:
 Async Iterables;
 Top level Await;
 Native fetch;
 Promises all the way down;
 Window object;
 Other Browser APIs...
Standard Library
La Standard Library di Deno 竪 davvero corposa e scritta con
approccio estremamente moderno.
Francesco Sciuti
https://www.acadevmy.it/intro
 archive tar archive utilities
 async async utilties
 bytes helpers to manipulate bytes slices
 datetime date/time parsing
 encoding encoding/decoding for various formats
 鍖ags parse command-line 鍖ags
 fmt formatting and printing
 fs 鍖le system API
 hash crypto lib
 http HTTP server
 io I/O lib
 log logging utilities
 mime support for multipart data
 node Node.js compatibility layer
 path path manipulation
 ws websockets
Qualche esempio
https://deno.land/std/examples/
Francesco Sciuti
https://www.acadevmy.it/intro
Installazione
https://deno.land/manual/getting_started/installation
Francesco Sciuti
https://www.acadevmy.it/intro
ed ecco a voi una piccola Deno
ehm...Demo!
Devo imparare Deno?
Francesco Sciuti
https://www.acadevmy.it/intro
Giuro che non lo so
ma vi ho detto prima delle cose che potrebbero convincervi! :D
E poi il logo 竪 troppo 鍖go
e quindi merita una possibilit!
Il futuro di una
razza estinta
Deno 竪 un interessante prodotto
ma non 竪 facile capire ad oggi se
avr uno spazio sul mercato.
Francesco Sciuti
https://www.acadevmy.it/intro
o se si estinguer per via di Albano!
Il futuro di una razza estinta
Le novit sono interessanti ma
sono sufficienti a renderlo una
vera alternativa a Node.js?
 Node.js 竪 leader nel mercato;
 Node.js 竪 consolidato e stabile;
 Node.js ha un ecosistema
immenso ed una vastissima
community.
Esiste un layer di compatibilit nella std in lavorazione... Francesco Sciuti
https://www.acadevmy.it/intro
Qualche Links
Docs
 Deno Manual
 Deno Standard Library
 Deno Third Party Modules
Modules / Tools
 OAK
 deno-mongo
 deno-redis
 Denon
 VSC Extension
 JetBrains Extension
 Deno Docker Files
Examples / Labs
 https://deno.land/std/exampl
es/
Playgrounds
 Deno.town
 Deno playground
 REPL
Other
 DenoPkg
 Deno on Cloud Run | GDG Cloud
MIlano
 Awesome-Deno
 Ryan Dahl lascia il progetto
 Node History Timeline
 Use npm Modules
 Node Compatibility
 Pika CDN
Francesco Sciuti
https://www.acadevmy.it/intro
...voglio ricordarvi
(arimarchettiamo)
Francesco Sciuti
https://www.acadevmy.it/intro
Francesco Sciuti
https://www.acadevmy.it/intro
https://www.youtube.com/c/acadevmy
Francesco Sciuti
https://www.acadevmy.it/intro
https://www.coderful.io
Francesco Sciuti
https://www.acadevmy.it/intro
Grazie a tutti!

More Related Content

What's hot (13)

La tua prima app per Ubuntu Touch
La tua prima app per Ubuntu TouchLa tua prima app per Ubuntu Touch
La tua prima app per Ubuntu Touch
Flavius-Florin Harabor
I package Android
I package AndroidI package Android
I package Android
Flavius-Florin Harabor
Node js dev day napoli 2016
Node js dev day napoli 2016Node js dev day napoli 2016
Node js dev day napoli 2016
Michele Nasti
Framework software e Zend Framework
Framework software e Zend FrameworkFramework software e Zend Framework
Framework software e Zend Framework
Enrico Zimuel
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
Simone Marzola
Le novit di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novit di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novit di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novit di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Antonio Gallo
Integrare Zend Framework in Wordpress
Integrare Zend Framework in WordpressIntegrare Zend Framework in Wordpress
Integrare Zend Framework in Wordpress
Enrico Zimuel
Android 6.0 Marshmallow: tutte le novit in poche slide
Android 6.0 Marshmallow: tutte le novit in poche slideAndroid 6.0 Marshmallow: tutte le novit in poche slide
Android 6.0 Marshmallow: tutte le novit in poche slide
Flavius-Florin Harabor
Alla scoperta del codice sorgente di Android
Alla scoperta del codice sorgente di Android Alla scoperta del codice sorgente di Android
Alla scoperta del codice sorgente di Android
Flavius-Florin Harabor
Blazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superatiBlazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superati
Commit University
Flutter
FlutterFlutter
Flutter
Kearon Lawen
Conoscere Android per poterlo Programmare
Conoscere Android per poterlo Programmare Conoscere Android per poterlo Programmare
Conoscere Android per poterlo Programmare
Flavius-Florin Harabor
PHP goes mobile
PHP goes mobilePHP goes mobile
PHP goes mobile
Enrico Zimuel
Node js dev day napoli 2016
Node js dev day napoli 2016Node js dev day napoli 2016
Node js dev day napoli 2016
Michele Nasti
Framework software e Zend Framework
Framework software e Zend FrameworkFramework software e Zend Framework
Framework software e Zend Framework
Enrico Zimuel
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
Simone Marzola
Le novit di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novit di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novit di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novit di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Antonio Gallo
Integrare Zend Framework in Wordpress
Integrare Zend Framework in WordpressIntegrare Zend Framework in Wordpress
Integrare Zend Framework in Wordpress
Enrico Zimuel
Android 6.0 Marshmallow: tutte le novit in poche slide
Android 6.0 Marshmallow: tutte le novit in poche slideAndroid 6.0 Marshmallow: tutte le novit in poche slide
Android 6.0 Marshmallow: tutte le novit in poche slide
Flavius-Florin Harabor
Alla scoperta del codice sorgente di Android
Alla scoperta del codice sorgente di Android Alla scoperta del codice sorgente di Android
Alla scoperta del codice sorgente di Android
Flavius-Florin Harabor
Blazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superatiBlazor - i limiti sono fatti per essere superati
Blazor - i limiti sono fatti per essere superati
Commit University
Conoscere Android per poterlo Programmare
Conoscere Android per poterlo Programmare Conoscere Android per poterlo Programmare
Conoscere Android per poterlo Programmare
Flavius-Florin Harabor

Similar to Deno - L'anagramma di node (20)

Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
Francesco Sciuti
Siamo tutti bravi con il browser degli altri!
Siamo tutti bravi con il browser degli altri!Siamo tutti bravi con il browser degli altri!
Siamo tutti bravi con il browser degli altri!
Francesco Sciuti
Do pair programming with an artificial intelligence
Do pair programming with an artificial intelligenceDo pair programming with an artificial intelligence
Do pair programming with an artificial intelligence
Giulio Roggero
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step Functions
Commit University
Zend Framework 2
Zend Framework 2Zend Framework 2
Zend Framework 2
Enrico Zimuel
Tech Webinar: Firefox Developer Tool
Tech Webinar: Firefox Developer ToolTech Webinar: Firefox Developer Tool
Tech Webinar: Firefox Developer Tool
Codemotion
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
jekil
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
Marco Parenzan
I came i saw i go - golang it meetup codemotion rome 2014
I came i saw i go - golang it meetup codemotion rome 2014I came i saw i go - golang it meetup codemotion rome 2014
I came i saw i go - golang it meetup codemotion rome 2014
Giulio De Donato
I came, i saw, i go - Cefaro and De Donato
I came, i saw, i go - Cefaro and De DonatoI came, i saw, i go - Cefaro and De Donato
I came, i saw, i go - Cefaro and De Donato
Codemotion
Sviluppare plugin per google Chrome
Sviluppare plugin per google ChromeSviluppare plugin per google Chrome
Sviluppare plugin per google Chrome
Codemotion
Node js: che cos'竪 e a che cosa serve?
Node js: che cos'竪 e a che cosa serve?Node js: che cos'竪 e a che cosa serve?
Node js: che cos'竪 e a che cosa serve?
Flavius-Florin Harabor
Wp security & SSL v2
Wp security & SSL v2Wp security & SSL v2
Wp security & SSL v2
VirginioLaurini
Non so assolutmente niente di informatica o web ma devo comunque creare un pr...
Non so assolutmente niente di informatica o web ma devo comunque creare un pr...Non so assolutmente niente di informatica o web ma devo comunque creare un pr...
Non so assolutmente niente di informatica o web ma devo comunque creare un pr...
Gabriele Guizzardi
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
jekil
Software contenuto nella chiavetta
Software contenuto nella chiavettaSoftware contenuto nella chiavetta
Software contenuto nella chiavetta
associazione ipertesto
Code Generation con i templates T4 in visual studio
Code Generation con i templates T4 in visual studioCode Generation con i templates T4 in visual studio
Code Generation con i templates T4 in visual studio
Marco Parenzan
Standard Dev Workflow
Standard Dev WorkflowStandard Dev Workflow
Standard Dev Workflow
Stefano Corallo
Real world Visual Studio Code
Real world Visual Studio CodeReal world Visual Studio Code
Real world Visual Studio Code
Roberto Messora
Google Chrome & Mozilla Firefox - Plugins & Extensions
Google Chrome & Mozilla Firefox - Plugins & ExtensionsGoogle Chrome & Mozilla Firefox - Plugins & Extensions
Google Chrome & Mozilla Firefox - Plugins & Extensions
Valeria Gennari
Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
Francesco Sciuti
Siamo tutti bravi con il browser degli altri!
Siamo tutti bravi con il browser degli altri!Siamo tutti bravi con il browser degli altri!
Siamo tutti bravi con il browser degli altri!
Francesco Sciuti
Do pair programming with an artificial intelligence
Do pair programming with an artificial intelligenceDo pair programming with an artificial intelligence
Do pair programming with an artificial intelligence
Giulio Roggero
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step Functions
Commit University
Tech Webinar: Firefox Developer Tool
Tech Webinar: Firefox Developer ToolTech Webinar: Firefox Developer Tool
Tech Webinar: Firefox Developer Tool
Codemotion
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezzaAndroid: Introduzione all'architettura, alla programmazione e alla sicurezza
Android: Introduzione all'architettura, alla programmazione e alla sicurezza
jekil
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
2014.04.04 Sviluppare applicazioni web (completamente) on line con Visual Stu...
Marco Parenzan
I came i saw i go - golang it meetup codemotion rome 2014
I came i saw i go - golang it meetup codemotion rome 2014I came i saw i go - golang it meetup codemotion rome 2014
I came i saw i go - golang it meetup codemotion rome 2014
Giulio De Donato
I came, i saw, i go - Cefaro and De Donato
I came, i saw, i go - Cefaro and De DonatoI came, i saw, i go - Cefaro and De Donato
I came, i saw, i go - Cefaro and De Donato
Codemotion
Sviluppare plugin per google Chrome
Sviluppare plugin per google ChromeSviluppare plugin per google Chrome
Sviluppare plugin per google Chrome
Codemotion
Node js: che cos'竪 e a che cosa serve?
Node js: che cos'竪 e a che cosa serve?Node js: che cos'竪 e a che cosa serve?
Node js: che cos'竪 e a che cosa serve?
Flavius-Florin Harabor
Non so assolutmente niente di informatica o web ma devo comunque creare un pr...
Non so assolutmente niente di informatica o web ma devo comunque creare un pr...Non so assolutmente niente di informatica o web ma devo comunque creare un pr...
Non so assolutmente niente di informatica o web ma devo comunque creare un pr...
Gabriele Guizzardi
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
jekil
Code Generation con i templates T4 in visual studio
Code Generation con i templates T4 in visual studioCode Generation con i templates T4 in visual studio
Code Generation con i templates T4 in visual studio
Marco Parenzan
Standard Dev Workflow
Standard Dev WorkflowStandard Dev Workflow
Standard Dev Workflow
Stefano Corallo
Real world Visual Studio Code
Real world Visual Studio CodeReal world Visual Studio Code
Real world Visual Studio Code
Roberto Messora
Google Chrome & Mozilla Firefox - Plugins & Extensions
Google Chrome & Mozilla Firefox - Plugins & ExtensionsGoogle Chrome & Mozilla Firefox - Plugins & Extensions
Google Chrome & Mozilla Firefox - Plugins & Extensions
Valeria Gennari

Deno - L'anagramma di node

  • 1. Deno: lanagramma di Node Francesco Sciuti https://www.acadevmy.it/intro
  • 2. Chi sono? Developer per scelta e per passione, amante di nerdaggini di ogni tipo ed amante della condivisione del sapere! Google Certi鍖ed Developer Francesco Sciuti https://www.acadevmy.it/intro
  • 5. Le tecnologie che prediligiamo Francesco Sciuti https://www.acadevmy.it/intro
  • 6. Francesco Sciuti https://www.acadevmy.it/intro ma basta marchette e parliamo di... Disclaimer: Non sono un drago su Node o un dino su Deno!
  • 7. Cosa 竪 un JS Engine? JS 竪 un linguaggio interpretato (quindi il codice non 竪 compilato prima dellesecuzione), quindi un JS engine si prende il compito di farlo on the 鍖y. In Google Chrome ad esempio questo avviene per mezzo dellengine V8. Francesco Sciuti https://www.acadevmy.it/intro
  • 8. Cosa 竪 un JS Runtime? Linterazione con lengine JS avviene attraverso un runtime environment, che si occupa inoltre di mettere a disposizione tante ulteriori funzionalit e caratteristiche al linguaggio JS, come ad esempio le innumerevoli API messe a disposizione. I browser sono il runtime environment che consentono questa interazione. Francesco Sciuti https://www.acadevmy.it/intro
  • 9. Server-side JS Runtime = Node.js Nel lontano 2009 arriva Node.js che introduce un JS runtime environment per consentire quindi di usare JS come linguaggio server, dando accesso, ad esempio, al 鍖le system, alla rete e ad altre cose che non sono consentite nei browser web. Francesco Sciuti https://www.acadevmy.it/intro
  • 10. Ryan Dahl ci ripensa? Nel 2018 il creatore di Node.js, durante un talk alla JSConf EU, parla di ci嘆 che avrebbe fatto diversamente su Node e quindi degli errori commessi in fase progettuale...e casualmente presenta il nuovo progetto: Deno! Francesco Sciuti https://www.acadevmy.it/intro Forse dopo aver lavorato in Go ha visto cose super forti e ci ha ripensato! :D
  • 11. Cosa non andava in Node.js? Francesco Sciuti https://www.acadevmy.it/intro Promises e Modern Features Non 竪 nato (o non proprio) con il supporto nativo alle promises, ed ancora la std library ne risente. Security Node pu嘆 accedere indistintamente a tutte le chiamate di sistema, come scrivere sul disco, accedere alla rete, etc... npm / node_modules Centralizzazione, folder node_modules, con鍖gurazione via package.json, etc... CommonJS Nato con require via CommonJS. Build System Utilizza GYP.
  • 12. Secure by default ES Modules Decentralized Packages TypeScript works natively Browser API Deno cosa ha di 鍖go? Top level await Tool Chain Modern ES Features Single executable 鍖le Remote execution Testing facility Francesco Sciuti https://www.acadevmy.it/intro Deno 竪 scritto in Rust/Tokio e TypeScript...gi per questa ragione per molti devs lo rende 鍖go!
  • 13. Secure by default Francesco Sciuti https://www.acadevmy.it/intro
  • 14. Secure by default Deno ti consente di controllare con precisione a cosa ha accesso il tuo programma. Deno non consente di eseguire un programma che tenta di accedere a delle speci鍖che caratteristiche, senza che lo si dichiari esplicitamente. Deno difatti viene eseguito in una sandbox, come farebbe il browser. Francesco Sciuti https://www.acadevmy.it/intro --allow-env --allow-hrtime --allow-net=<allow-net> --allow-plugin --allow-read=<allow-read> --allow-run --allow-write=<allow-write> --allow-all Deno consente inoltre di controllare la granularit di alcune autorizzazioni con le whitelist.
  • 15. ES modules import syntax Francesco Sciuti https://www.acadevmy.it/intro
  • 16. ES modules import syntax Deno consente di importare dal Web utilizzando la sintassi degli ES modules, proprio come lo standard propone. Memorizza nella cache le dipendenze dopo averle recuperate la prima volta; Le dipendenze possono essere condivise tra progetti; Importazione da path espliciti o url; Esplicita necessit di indicare le estensioni degli import. Francesco Sciuti https://www.acadevmy.it/intro
  • 17. Decentralized Packages Non 竪 presente alcuna centralizzazione dei packages, che possono essere importati direttamente via url, senza passare da 鍖le di con鍖gurazione o folder speci鍖ci. Con Deno non si 竪 dipendenti ad un servizio centralizzato come NPM ma avremo la possibilit di importare da qualunque url. Francesco Sciuti https://www.acadevmy.it/intro https://deno.land/std (Standard Library) https://deno.land/x (Third Party Module) https://deno.land/x/MODULE_NAME@BRANCH/SCRIPT.ts
  • 19. TypeScript works natively Deno supporta TypeScript by design. Non 竪 necessario impostare o con鍖gurare nulla. Puoi assolutamente scrivere il normale codice JavaScript con Deno, ma se lo desideri, puoi anche passare a TypeScript in qualsiasi momento, poich辿 il compilatore TypeScript 竪 integrato in Deno. Francesco Sciuti https://www.acadevmy.it/intro
  • 21. Tool Chain Una caratteristica molto interessante 竪 che Deno porta con se molti tools che consentono di essere pronto a tutto! Deno mette tools a disposizione per: Formatting; Testing; Installing; Shell completition; Cache management; ... Francesco Sciuti https://www.acadevmy.it/intro
  • 22. Modern ES Features Francesco Sciuti https://www.acadevmy.it/intro
  • 23. Modern ES Features Deno nasce in un momento storico diverso da Node e quindi porta tante caratteristiche di un JavaScript moderno (come se non bastasse gi TypeScript :D). Francesco Sciuti https://www.acadevmy.it/intro Deno mette tools a disposizione per: Async Iterables; Top level Await; Native fetch; Promises all the way down; Window object; Other Browser APIs...
  • 24. Standard Library La Standard Library di Deno 竪 davvero corposa e scritta con approccio estremamente moderno. Francesco Sciuti https://www.acadevmy.it/intro archive tar archive utilities async async utilties bytes helpers to manipulate bytes slices datetime date/time parsing encoding encoding/decoding for various formats 鍖ags parse command-line 鍖ags fmt formatting and printing fs 鍖le system API hash crypto lib http HTTP server io I/O lib log logging utilities mime support for multipart data node Node.js compatibility layer path path manipulation ws websockets
  • 26. Francesco Sciuti https://www.acadevmy.it/intro ed ecco a voi una piccola Deno ehm...Demo!
  • 27. Devo imparare Deno? Francesco Sciuti https://www.acadevmy.it/intro Giuro che non lo so ma vi ho detto prima delle cose che potrebbero convincervi! :D E poi il logo 竪 troppo 鍖go e quindi merita una possibilit!
  • 28. Il futuro di una razza estinta Deno 竪 un interessante prodotto ma non 竪 facile capire ad oggi se avr uno spazio sul mercato. Francesco Sciuti https://www.acadevmy.it/intro o se si estinguer per via di Albano!
  • 29. Il futuro di una razza estinta Le novit sono interessanti ma sono sufficienti a renderlo una vera alternativa a Node.js? Node.js 竪 leader nel mercato; Node.js 竪 consolidato e stabile; Node.js ha un ecosistema immenso ed una vastissima community. Esiste un layer di compatibilit nella std in lavorazione... Francesco Sciuti https://www.acadevmy.it/intro
  • 30. Qualche Links Docs Deno Manual Deno Standard Library Deno Third Party Modules Modules / Tools OAK deno-mongo deno-redis Denon VSC Extension JetBrains Extension Deno Docker Files Examples / Labs https://deno.land/std/exampl es/ Playgrounds Deno.town Deno playground REPL Other DenoPkg Deno on Cloud Run | GDG Cloud MIlano Awesome-Deno Ryan Dahl lascia il progetto Node History Timeline Use npm Modules Node Compatibility Pika CDN Francesco Sciuti https://www.acadevmy.it/intro