Présentation Versusmind de la Plateforme Meteor par Arthur Maroulier : Meteor est une série de projets 100% open source intégrés pour créer une plateforme d'application JavaScript complète pour le développement d'applications réactives sur web et mobile.
9. Meteor
Plateforme
JavaScript
Full-Stack
Skybreak première version 12/2011
Renommé Meteor le 20/01/2012
25/07/2012 Levée de fonds de 11,2 millions de dollars
Meteor v1.0 le 28/10/2014
19/05/2015 Levée de fonds de 20 millions de dollars
Meteor Development Group : 31+ personnes à temps plein
22. Livequery
Connecteurs de base de données temps réel.
Requête = résultat + mises à jours au fil du temps
oplog tailing
23. Tracker
Minuscule (~1ko) mais puissante.
Permet de faire de l'événementiel sans avoir à le gérer et de réagir
en cascade aux changements des sources de données.
La plupart des composants de Meteor l'utilisent.
24. Tracker
var currentTemperatureCelsius = function () {
return (currentTemperatureFahrenheit() - 32) / (9/5);
};
> currentTemperatureCelsius()
21.7
> var handle = Tracker.autorun(function () {
console.log("La température actuelle est ", currentTemperatureCelsius(), "°c");
});
La température actuelle est 21.7°C (affiché immédiatement)
La température actuelle est 22.0°C (affiché quelques minutes plus tard)
> handle.stop(); (arrête le tracker)
26. JavaScript
Le même code du client au serveur, pour les packages et les API
de base de données.
Le même code sur tout les navigateurs et appareils mobiles.
27. Mobile
et
Web
Isobuild : à la fois une application web et une app iOS / Android.
Cordova et tout ses plugins vous tendent les bras.
34. Outils
et
services
Pour simplifier le processus de développement.
Les dépendances sont injectés et minifiées automatiquement.
Hot
code
push : mise à jour du code en préservant états et
sessions.
39. Structure
initiale
On
lance
l'app
$ ls -a
. .meteor symposium-meteor-demo.css
.. symposium-meteor-demo.js symposium-meteor-demo.html
$ ls .meteor/
local packages platforms release versions
$ meteor
45. On
ajoute
la
liste
des
films
dans
la
collection
des
films
/server/server.js
Meteor.startup(function () {
...
if (!Movies.find().count()) {
[
'À la poursuite de demain',
'Avengers: L'ère d'Ultron',
'Jurassic World',
'Kingsman : Services secrets',
'Mad Max: Fury Road',
'Mission: Impossible - Rogue Nation',
'Pixels',
'Seul sur Mars',
'Spectre',
'Terminator Genisys'
].forEach(function (d) {
Movies.insert({ title: d, createdAt: Date.now()});
});
}
53. On
ajoute
encore
plus
de
magie
:
flexbox
/client/index.html
getOrder retourne l'ordre d'un film en fonction du nombre de votes
qu'il a.
<template name="buttons">
<ul class="flexContainer">
{{#each movies}}
<li style="order: {{getOrder this.title}}">{{> button}}</li>
{{/each}}
</ul>
</template>
meteor.demo.maroulier.com
github.com/ArthurMaroulier/meteor-demo
64. Retour
d'expérience
Facilité de mise en place
Produit fonctionnel en très peu de temps
Supprimer les packages insecure et autopublish
Piège du package qui évolue radicalement
Problèmes de conflits de versions de paquets
Déploiement sur son propre serveur (hors service payant)