Javascript dans tous ses ét ats

Post on 12-Feb-2016

66 views 0 download

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 Presentation

Transcript of Javascript dans tous ses ét ats

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