Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

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

76 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

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 !

×