Upload
erwan-boulard
View
417
Download
0
Embed Size (px)
Citation preview
Erwan BOULARDhttps://twitter.com/erwanboulard
Agenda
1. Qu’est ce que Meteor JS ?
2. Principes
3. Le framework
4. Développement cross-plateforme
5. Qui l’utilise ?
6. Démo
Qu’est ce que Meteor JS ?
Qu’est ce que Meteor JS ?
Framework de développement web en Javascript basé sur node
Permet de créer des applications multiplateformes (web et mobile)
Langage JavaScript coté serveur et coté client
Permet d’avoir un comportement proche du temps réel
Principes
1 – Echange de données
Plus d’échange de fichiers HTML après le premier appel (contrairement au comportement classique d’applications PHP, JavaEE, etc.) Meteor, n'envoie pas de code HTML, il envoie des données et laisse au client le soin de
faire le rendu de l'application.
Utilisation du protocole DDP(Distributed Data Protocol) pour la communication client/serveur Protocole basé sur les websockets Echange de données au format EJSON (json étendu – Gestion de types
supplémentaires)
2 – Un seul langage
JavaScript pour travailler côté serveur et client
Mutualisation de codes entre le client et le serveur
Possibilité d’utiliser d’autres langages comme CoffeeScript, Typescript, ECMAScript, etc.
3 – Bases de données coté serveur et client
Une base de données MongoDB côté serveur
Une base MiniMongo côté client (réimplémentation d’une partie de l’API MongoDB)
Une Synchronisation entre les deux
4 – Compensation de latences
Compensation grâce au principe d’« Optimistic UI »
Pour pallier le temps de latence d’un aller retour serveur, une compensation est effectuée directement dans le navigateur
Plutôt que d'attendre que les données envoyées ne soient renvoyées, un contrôle optimiste est fait côté client dans l’attente d’un retour serveur
5 – Une grande réactivité
Meteor est basé sur la réactivité et s’approche du temps réel (connecteur livequery)
Les données du backend et du frontend sont mises à jour automatiquement
Toutes les informations dans le navigateur client peuvent changer à n'importe quel moment, sans que le client n'ait effectué une seule requête
6 – Simplicité synonyme de productivité
Plateforme complète sans besoin d’ajout de composants externes supplémentaires
Installation simple et rapide
Développement efficace en très peu de lignes de codes
Meteor est fortement modulable grâce à ses packages officiels ou issus de la communauté (répertoriés sur Atmosphere).
Des outils et des modules pour tous les besoins
7 – L’écosystème
Meteor possède son propre gestionnaire de packages, « Atmosphere » (https://atmospherejs.com), qui propose près de 10000 packages
La communauté autour de Meteor est conséquente et très active
Compatibilité assurée avec les modules nodejs (npm)
Populaire sur Github : 31k stars (classé 11ème des projets js les plus étoilés de github – Déc 2015)
Le framework
Architecture applicative
Meteor est un ensemble de projets qui constitue une plateforme complète pour le développement d’application desktop et mobile
Meteor propose une compatibilité avec Angular ou React, en remplacement de son moteur de template Blaze
Build, packaging, déploiement
Meteor intègre un outil pour le build, packaging et déploiement
Ces étapes sont toutes automatisées et nécessitent un minimum de temps de configuration
De nombreux packages sont disponibles pour répondre à des besoins particuliers
Une plateforme de test en ligne est disponible et mise à disposition par Meteor
Sécurité
Pas d’accès direct à la base Mongo depuis le client
Pas de synchronisation complète de la base Mongo côté serveur dans la base client
On à la main sur les données que l’on souhaite synchroniser avec la base de données coté client (méthodes publish/subscribe)
D’autres procédés permettent d’ajouter une couche de validation avant les opérations en bdd côté client et côté serveur (callbacks Allow/Deny ou Meteor Methods)
Le test sur Meteor
Le test runner officiel de Meteor est Velocity (développé par la communauté Meteor)
Possibilité d’utiliser d’autres tests runner (ex : karma, chimp, etc)
Ecriture de tests avec les principaux fwk JSJasmineMochaCucumber
Développement cross-plateforme
Développement Cross-platforme
Génération à partir du même code un site web et des applications mobiles multiplateformes
Intégration de Apache Cordova pour la génération d’applications mobiles IOS et Android (et pas windows phone)
Propose un package, spiderable, pour l’optimisation du référencement par les moteurs de recherches
Qui l’utilise ?
Qui l’utilise ?
https://rocket.chat/ : Plateforme type slack (outil de collaboration en ligne)
https://beta.workpop.com/ : Plateforme proposant des offres d’emploi
https://hansoftx.com : plateforme collaborative
https://codefights.com/ : Test de coding
https://github.com/idanwe/meteor-whatsapp : whatsapp en version Meteor
etc….
Demo
Demos
Lien vers la démo : http://eboulard.meteor.com
Le live update
Structure d’un projet meteor
Sources
Sources
http://info.meteor.com/https://fr.wikipedia.org/wiki/Meteor_(framework) http://joshowens.me/what-is-meteor-js/ http://fr.discovermeteor.com/https://openclassrooms.com/courses/creez-une-single-page-app-avec-nod
e-js-et-meteor/
http://www.tiz.fr/meteor-js-framework-javascript/ https://meteorhacks.com/introduction-to-ddp.html