1 / 31

Javascript dans tous ses ét ats

Javascript dans tous ses ét ats. Bruno Michel Yann Schwartz AF83 Polom @ brmichel @ abolibibelot. Au menu. Contexte Javascript serveur & asynchrone : node Javascript réactif : Reactive Extensions Javascript , the good parts : coffeescript. Contexte. Interlude.

shasta
Download Presentation

Javascript dans tous ses ét ats

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Javascriptdans tous ses états Bruno Michel Yann SchwartzAF83 Polom @brmichel @abolibibelot

  2. Au menu • Contexte • Javascript serveur & asynchrone : node • Javascript réactif : Reactive Extensions • Javascript, the good parts : coffeescript

  3. Contexte

  4. Interlude Javascriptcôté serveur

  5. Javascript serveur & asynchrone : node

  6. node.js • Un environnement JavaScript • Côté serveur • Avec un modèle asynchrone • Efficace pour les I/O • Plus simple que le C ;-)

  7. Démo Hello World, version web

  8. Démo Un serveur de discussion en ligne

  9. Le modèle asynchrone • Le principe : déléguer à node.js • Dès que l'on risque d'attendre • on demande à node.js : • Fais ceci dès que tu peux • et quand c'est fait, reviens me voir • Une fonction de callback • Avec error en premier paramètre • Un UNIQUE thread d’exécution (mais toutes les actions d’I/O sont asynchrones)

  10. Les avantages • Node.js très efficace pour la concurrence • Gère les I/O pour vous • Quasiment aussi rapide qu'un serveur HTTP • Beaucoup de connexions en parallèle • Mais reste simple à écrire • Sans les problèmes classiques des threads • (synchronisation, ressources, etc.)

  11. L'écosystème • Un écosystème qui grandit rapidement • https://github.com/ry/node/wiki/ • Quelques modules à connaître • NPM – Node Package Manager • Vows – Tester votre code • Express – Un framework web léger • Fugue – Serveur avec plusieurs instances

  12. Javascript réactif : Reactive Extensions

  13. Reactive Extensions for Js Si on parlait de LINQ ?

  14. LINQ ? • Une approche déclarative • Evaluation paresseuse • On enchaîne les opérateurs pour travailler sur un flux de données • On compose ses traitements

  15. LINQ en une phrase • Un pattern de manipulation de données, composable, et basé sur le pull.

  16. Revenons à nos moutons • La programmation Javascript fait grand usage : • Des événements • De l’asynchrone • Gérer asynchrone et événements devient vite complexe • On pense encore synchrone et impératif • Gestion des erreurs • Synchronisation et combinaisons • Et si on avait un « LINQ to events » ? • Mais en Javascript

  17. Reactive Extensions • LINQ : IEnumerable<T> • Rx : Observable et Observer • LINQ et Rx : évaluation paresseuse « just in time » • LINQ et Rx : on compose des opérateurs

  18. Observable et Observer • Un Observable Une source à laquelle on s’abonne • Un Observable n’est pas un événement • Abstraction facilement manipulable et composable • Plus facile à tester • Un Observer s’abonne à l’Observable • Consomme • Précise ce qui se passe en cas d’erreur ou de fin

  19. Les observables permettent de manipuler une chronologie d’événements comme une séquence • On applique des opérateurs à cette chronologie • Et on exprime ainsi un workflow

  20. Quelques opérateurs • « Classiques » Where, Select, Skip, TakeWhile, Zip, Range • Agrégations Min, Max, Sum, Aggregate, Scan, GroupBy • Structures de contrôle If, Then, While • Spécifiques Rx BufferWith* AmbJoinForkJoinFrom*Event, ToAsync, XmlHttpRequest

  21. Exemple

  22. Démo RxJavascript

  23. Javascript, the good parts : coffeescript

  24. Coffeescript

  25. Javascript • Ce qui est beau • First class functions • Closures • Prototypes et dynamisme • Objets littéraux

  26. The ugly parts • Les variables globales • La portée • Les points virgule en folie • Les comparaisons • hasOwnProperty… • le mot clé with… • Les bonnes et moins bonnes manières de créer des objets • Le bruit syntaxique des { ( et ;

  27. Coffeescript • Et si on gardait les bons côtés… … en oubliant les autres ? • Fonctions plus simples à écrire • Plus d’accolades • La bonne portée par défaut • Pas de mauvaises surprises sur la comparaison • Création simplifiée des classes • Quelques bonus

  28. Compilation • Coffeescript se compile en Javascript standard et propre (performances comparables) • Compilation en ligne de commande ou à la volée • Compatible avec toutes les bibliothèques Javascript existantes (jquery, Rx, node ….)

  29. Ressources Reactive Extensions Home: msdn.microsoft.com/data/gg577609 Série sur RxJs : weblogs.asp.net/podwysocki/ Node Home : github.com/ry/node Binaires windows : node-js.prcn.co.cc Coffeescript Home : jashkenas.github.com/coffee-script/Wrapper .NET : github.com/abolibibelot/coffeescript-dotnet Démos github.com/abolibibelot/Techdays2011_Javascript

  30. MSDN et TechNet: l’essentiel des ressources techniques à portée de clic • Portail administration et infrastructure pour informaticiens • Portail de ressources technique pour développeurs http://technet.com http://msdn.com

More Related