Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
@Xebiconfr #Xebicon18 @_maxpch @modulom
Build the future
Deno, le nouveau Node.js qui inverse la tendance ?
Maxime Pichou,...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Qui sommes-nous ?
Maxime Pichou
Développeur Back/Cloud
Antoine Le Taxin
Développeu...
@Xebiconfr #Xebicon18 @_maxpch @modulom
De quoi allons nous parler ?
1. NodeJS et son créateur
2. Les erreurs de NodeJS
3....
@Xebiconfr #Xebicon18 @_maxpch @modulom
NodeJS et son créateur
@Xebiconfr #Xebicon18 @_maxpch @modulom
Les origines de Deno
● Ryan Dahl
● Créateur de Node.js
● Conférence de JS Conf Ber...
@Xebiconfr #Xebicon18 @_maxpch @modulom
V8
engine
fs http
os
path
● Première version en 2009
● Écrit en C++
● Environnemen...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Les erreurs de NodeJS
« node_modules are heaviest objects in the universe »
Ryan D...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Gestion des dépendances
● Seulement un repository centralisé pour les modules (qui...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Build System
● Depuis 2012, NodeJS utilise GYP (Generate Your Project)
● GYP créé ...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Et d’autres regrets
● Le fichier index.js
● Le require sans extension
● Ne meurt j...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Les ambitions de Deno
@Xebiconfr #Xebicon18 @_maxpch @modulom
Les promesses de Deno
● Support natif de TypeScript 3.0
● Sécurité en mode sandbox...
@Xebiconfr #Xebicon18 @_maxpch @modulom
● Typescript : gestion de la public API
● Rust : partie bas niveau de Deno
● C++ :...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno, où ça en est ?
@Xebiconfr #Xebicon18 @_maxpch @modulom
Avancement de Deno
Lorsque notre présentation a été retenue pour la Xebicon
@Xebiconfr #Xebicon18 @_maxpch @modulom
Avancement de Deno
Lorsque nous nous sommes plongés dans la documentation et
vu l’...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Avancement de Deno
● Deno est très jeune (à peine 6 mois)
● Pas beaucoup de foncti...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno et la sécurité - Allow write
import { mkdir, args } from "deno";
const direct...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno et la sécurité - Allow network
async function main() {
const response = await...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno et les modules
● Système d’import par URL
● Incompatible avec CommonJs
● Comp...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno et await
● Objectif de supporter await au plus haut niveau
● Difficulté pour ...
@Xebiconfr #Xebicon18 @_maxpch @modulom
C’est quoi la suite ?
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno demain
Roadmap :
● TCP Server
● Lister les dépendances
● Public API (I/O, set...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Deno inverse-t-il vraiment la tendance face à NodeJS ?
● Beaucoup plus sécurisé
● ...
@Xebiconfr #Xebicon18 @_maxpch @modulom
Merci !
Prochain SlideShare
Chargement dans…5
×

XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?

106 vues

Publié le

Le créateur de NodeJS, Ryan Dahl, a décidé de créer un nouveau runtime pour Javascript : Deno. Son but ? Eliminer les erreurs et maladresses de son grand frère. Découvrez ce qui se cache derrière ainsi que la vision de son créateur.

Par Maxime Pichou, développeur Back/Cloud chez Xebia

Toutes les informations sur xebicon.fr

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

XebiCon'18 - Deno, le nouveau NodeJS qui inverse la tendance ?

  1. 1. @Xebiconfr #Xebicon18 @_maxpch @modulom Build the future Deno, le nouveau Node.js qui inverse la tendance ? Maxime Pichou, développeur Back/Cloud Antoine Le Taxin, développeur full stack JS
  2. 2. @Xebiconfr #Xebicon18 @_maxpch @modulom Qui sommes-nous ? Maxime Pichou Développeur Back/Cloud Antoine Le Taxin Développeur full stack JS @modulom@_maxpch
  3. 3. @Xebiconfr #Xebicon18 @_maxpch @modulom De quoi allons nous parler ? 1. NodeJS et son créateur 2. Les erreurs de NodeJS 3. Les promesses de Deno 4. Quelques exemples 5. Conclusion
  4. 4. @Xebiconfr #Xebicon18 @_maxpch @modulom NodeJS et son créateur
  5. 5. @Xebiconfr #Xebicon18 @_maxpch @modulom Les origines de Deno ● Ryan Dahl ● Créateur de Node.js ● Conférence de JS Conf Berlin en Juin 2018 En résumé : ● NodeJS ● Deno
  6. 6. @Xebiconfr #Xebicon18 @_maxpch @modulom V8 engine fs http os path ● Première version en 2009 ● Écrit en C++ ● Environnement exécutable pour JavaScript ● Utilisation de NPM pour la gestion des dépendances
  7. 7. @Xebiconfr #Xebicon18 @_maxpch @modulom Les erreurs de NodeJS « node_modules are heaviest objects in the universe » Ryan Dalh
  8. 8. @Xebiconfr #Xebicon18 @_maxpch @modulom Gestion des dépendances ● Seulement un repository centralisé pour les modules (qui est privé) ● Trop de dépendances vers les modules : ■ Le fichier javascript ■ Le package.json ■ Le dossier node_modules local ■ Le module dans la BDD de NPM ● Trop de boilerplate pour gérer les dépendances
  9. 9. @Xebiconfr #Xebicon18 @_maxpch @modulom Build System ● Depuis 2012, NodeJS utilise GYP (Generate Your Project) ● GYP créé par Chromium Project et utilisé pour V8 engine ● En 2016, Google passe à GN (Generate Ninja) ● NodeJS décide de rester sur GYP à tort
  10. 10. @Xebiconfr #Xebicon18 @_maxpch @modulom Et d’autres regrets ● Le fichier index.js ● Le require sans extension ● Ne meurt jamais sur les « uncaught errors » ● Les applications ne sont pas sécurisées
  11. 11. @Xebiconfr #Xebicon18 @_maxpch @modulom Les ambitions de Deno
  12. 12. @Xebiconfr #Xebicon18 @_maxpch @modulom Les promesses de Deno ● Support natif de TypeScript 3.0 ● Sécurité en mode sandbox d’une application ● Embarquement du moteur V8 7.0 de Chrome ● Gestion des dépendances simplifiées ● Support de await au plus haut niveau ● Compatibilité avec les navigateurs (browser) ● Meurt sur les « uncaught errors »
  13. 13. @Xebiconfr #Xebicon18 @_maxpch @modulom ● Typescript : gestion de la public API ● Rust : partie bas niveau de Deno ● C++ : pour le binding avec V8 ● Python : pour de l’utilitaire, du testing ... Langages utilisés
  14. 14. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno, où ça en est ?
  15. 15. @Xebiconfr #Xebicon18 @_maxpch @modulom Avancement de Deno Lorsque notre présentation a été retenue pour la Xebicon
  16. 16. @Xebiconfr #Xebicon18 @_maxpch @modulom Avancement de Deno Lorsque nous nous sommes plongés dans la documentation et vu l’état d’avancement du projet
  17. 17. @Xebiconfr #Xebicon18 @_maxpch @modulom Avancement de Deno ● Deno est très jeune (à peine 6 mois) ● Pas beaucoup de fonctionnalités finies ● Cependant très actif (une release toutes les semaines environ) ● Pas encore de date de sortie officielle
  18. 18. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno et la sécurité - Allow write import { mkdir, args } from "deno"; const directoryName = args[1]; createDirectory(directoryName) .then(() => console.log("done")) .catch(error => console.error(error)); async function createDirectory(path : string) { await mkdir(path); } deno --allow-write mkdir_example.ts xebicon PermissionDenied: permission denied at maybeError (deno/js/errors.ts:25:12) at handleAsyncMsgFromRust (deno/js/dispatch.ts:19:15) Sans --allow-write
  19. 19. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno et la sécurité - Allow network async function main() { const response = await fetch("https://xebicon.fr/"); console.log(`status = ${response.status}`); } main(); PermissionDenied: permission denied at maybeError (deno/js/errors.ts:25:12) at handleAsyncMsgFromRust (deno/js/dispatch.ts:19:15) Sans --allow-net deno --allow-net fetch_response.ts
  20. 20. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno et les modules ● Système d’import par URL ● Incompatible avec CommonJs ● Compatible avec l’import ESM ou AMD import { someModule } from "https://unpkg.com/somemodule@2.1.3/somemodule.ts";
  21. 21. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno et await ● Objectif de supporter await au plus haut niveau ● Difficulté pour trouver une solution en accord avec TS import { mkdir, args } from "deno"; const directoryName : string = args[1]; await mkdir(directoryName);
  22. 22. @Xebiconfr #Xebicon18 @_maxpch @modulom C’est quoi la suite ?
  23. 23. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno demain Roadmap : ● TCP Server ● Lister les dépendances ● Public API (I/O, setTimeout etc) ● Binding infrastructure entre V8 et libdeno ● Await au plus haut niveau
  24. 24. @Xebiconfr #Xebicon18 @_maxpch @modulom Deno inverse-t-il vraiment la tendance face à NodeJS ? ● Beaucoup plus sécurisé ● Typescript natif ● Gestion des dépendances simplifiée ● Utilisation du build system GN ● Promesse de compatibilité avec les browsers Point positif : Point d’attention : ● Incompatible avec NodeJS ● La gestion des dépendances est elle adaptée sur de gros projet ? ● Gestion des droits trop binaire
  25. 25. @Xebiconfr #Xebicon18 @_maxpch @modulom Merci !

×