javascript dans tous ses ét ats
DESCRIPTION
Javascript dans tous ses ét ats. Bruno MichelYann Schwartz AF83 Polom @ brmichel @ abolibibelot. Au menu. Contexte Javascript serveur & asynchrone : node Javascript réactif : Reactive Extensions Javascript , the good parts : coffeescript. Contexte. Interlude. - PowerPoint PPT PresentationTRANSCRIPT
2
Javascript dans tous ses états
Bruno Michel Yann SchwartzAF83 Polom@brmichel @abolibibelot
3
Au menu• Contexte
• Javascript serveur & asynchrone : node
• Javascript réactif : Reactive Extensions
• Javascript, the good parts : coffeescript
4
Contexte
5
Interlude
Javascript côté serveur
6
Javascript serveur & asynchrone : node
7
node.jsUn environnement JavaScriptCôté serveurAvec un modèle asynchroneEfficace pour les I/OPlus simple que le C ;-)
8
DémoHello World, version web
9
DémoUn serveur de discussion en ligne
10
Le modèle asynchroneLe principe : déléguer à node.js
Dès que l'on risque d'attendre on demande à node.js :
Fais ceci dès que tu peuxet quand c'est fait, reviens me voir
Une fonction de callbackAvec error en premier paramètre
• Un UNIQUE thread d’exécution (mais toutes les actions d’I/O sont asynchrones)
11
Les avantages• Node.js très efficace pour la concurrence
Gère les I/O pour vousQuasiment aussi rapide qu'un serveur HTTPBeaucoup de connexions en parallèle
• Mais reste simple à écrireSans les problèmes classiques des threads(synchronisation, ressources, etc.)
12
L'écosystèmeUn écosystème qui grandit rapidement
https://github.com/ry/node/wiki/
Quelques modules à connaîtreNPM – Node Package ManagerVows – Tester votre codeExpress – Un framework web légerFugue – Serveur avec plusieurs instances
13
Javascript réactif : Reactive Extensions
14
Reactive Extensions for JsSi on parlait de LINQ ?
15
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
16
LINQ en une phrase
• Un pattern de manipulation de données, composable, et basé sur le pull.
17
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
18
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
19
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
20
• 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
21
Quelques opérateurs• « Classiques »
Where, Select, Skip, TakeWhile, Zip, Range• Agrégations
Min, Max, Sum, Aggregate, Scan, GroupBy
• Structures de contrôleIf, Then, While
• Spécifiques RxBufferWith* Amb Join ForkJoin
From*Event, ToAsync, XmlHttpRequest
22
Exemple
23
DémoRx Javascript
24
Javascript, the good parts : coffeescript
25
Coffeescript
26
Javascript• Ce qui est beau
• First class functions• Closures• Prototypes et dynamisme• Objets littéraux
27
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 ;
28
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
29
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 ….)
30
RessourcesReactive ExtensionsHome : msdn.microsoft.com/data/gg577609Série sur RxJs : weblogs.asp.net/podwysocki/
NodeHome : github.com/ry/nodeBinaires windows : node-js.prcn.co.cc
CoffeescriptHome : jashkenas.github.com/coffee-script/Wrapper .NET : github.com/abolibibelot/coffeescript-dotnet
Démosgithub.com/abolibibelot/Techdays2011_Javascript
31
MSDN et TechNet : l’essentiel des ressources techniques à portée de clic
http://technet.com http://msdn.com
Portail administration et infrastructure pour informaticiens
Portail de ressources technique pour développeurs