SlideShare a Scribd company logo
Deno: l’anagramma 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 Certified 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 dell’esecuzione), quindi un JS
engine si prende il compito di farlo on the fly.
In Google Chrome ad esempio questo avviene per
mezzo dell’engine V8.
Francesco Sciuti
https://www.acadevmy.it/intro
Cosa è un JS Runtime?
L’interazione con l’engine 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 file 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, configurazione 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 figo?
● Top level await
● Tool Chain
● Modern ES Features
● Single executable file
● 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 figo!
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 specifiche 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 file di
configurazione o folder specifici.
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://stackoverflow.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 configurare 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
● flags parse command-line flags
● fmt formatting and printing
● fs file 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 figo
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

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
 
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
 

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
 
I package Android
I package AndroidI package Android
I package Android
 
Node js dev day napoli 2016
Node js dev day napoli 2016Node js dev day napoli 2016
Node js dev day napoli 2016
 
Framework software e Zend Framework
Framework software e Zend FrameworkFramework software e Zend Framework
Framework software e Zend Framework
 
App Engine + Python
App Engine + PythonApp Engine + Python
App Engine + Python
 
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...
 
Integrare Zend Framework in Wordpress
Integrare Zend Framework in WordpressIntegrare Zend Framework in Wordpress
Integrare Zend Framework in Wordpress
 
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
 
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
 
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
 
Flutter
FlutterFlutter
Flutter
 
Conoscere Android per poterlo Programmare
Conoscere Android per poterlo Programmare Conoscere Android per poterlo Programmare
Conoscere Android per poterlo Programmare
 
PHP goes mobile
PHP goes mobilePHP goes mobile
PHP goes mobile
 

Similar to Deno - L'anagramma di node

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 - 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
 
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
 
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
 

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

Microsoft Fast - Overview
Microsoft Fast - OverviewMicrosoft Fast - Overview
Microsoft Fast - Overview
 
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!
 
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
 
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
 
Zend Framework 2
Zend Framework 2Zend Framework 2
Zend Framework 2
 
Tech Webinar: Firefox Developer Tool
Tech Webinar: Firefox Developer ToolTech Webinar: Firefox Developer Tool
Tech Webinar: Firefox Developer Tool
 
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
 
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...
 
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
 
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
 
Sviluppare plugin per google Chrome
Sviluppare plugin per google ChromeSviluppare plugin per google Chrome
Sviluppare plugin per google Chrome
 
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?
 
Wp security & SSL v2
Wp security & SSL v2Wp security & SSL v2
Wp security & SSL v2
 
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...
 
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 ...
 
Software contenuto nella chiavetta
Software contenuto nella chiavettaSoftware contenuto nella chiavetta
Software contenuto nella chiavetta
 
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
 
Standard Dev Workflow
Standard Dev WorkflowStandard Dev Workflow
Standard Dev Workflow
 
Real world Visual Studio Code
Real world Visual Studio CodeReal world Visual Studio Code
Real world Visual Studio Code
 
Google Chrome & Mozilla Firefox - Plugins & Extensions
Google Chrome & Mozilla Firefox - Plugins & ExtensionsGoogle Chrome & Mozilla Firefox - Plugins & Extensions
Google Chrome & Mozilla Firefox - Plugins & Extensions
 

Deno - L'anagramma di node

  • 1. Deno: l’anagramma 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 Certified 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 dell’esecuzione), quindi un JS engine si prende il compito di farlo on the fly. In Google Chrome ad esempio questo avviene per mezzo dell’engine V8. Francesco Sciuti https://www.acadevmy.it/intro
  • 8. Cosa è un JS Runtime? L’interazione con l’engine 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 file 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, configurazione 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 figo? ● Top level await ● Tool Chain ● Modern ES Features ● Single executable file ● 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 figo!
  • 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 specifiche 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 file di configurazione o folder specifici. 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 configurare 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 ● flags parse command-line flags ● fmt formatting and printing ● fs file 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 figo 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