Full Stack Reactivity avec Meteor

Full Stack Reactivity avec Meteor

Qui suis-je ?

avatar

Anthonny Quérouil

Le jour

Je suis développeur indépendant et j’interviens sur des problématiques back-end et front-end en utilisant notamment Java et Javascript.

Le soir

Je contribue à plusieurs projets open-source autour de l’outil Asciidoctor, et je développe HubPress, un outil de blogging basé sur GitHub Pages.

asciidoctor hubpress

Objectifs

  • Vous présenter Meteor

  • Développer une appli

  • Avoir du feedback

Vous faites quoi vous ?

Kesako Meteor ?

Meteor is an ultra-simple environment for building modern websites. What once took weeks, even with the best tools, now takes hours with Meteor.

— Meteor team

Et Angular, React, c’est la même ?

  • Non, Angular et React sont des frameworks front-end only

  • MEAN.io ou MEAN.JS s’en rapprochent mais …​

  • …​ Meteor est plus "all-in-one"

On parle Environnement

  • Node v0.10.35

  • NPM v2.9.0

  • Mongo v2.6.7

  • Librairies JavaScript (jquery, underscore, …​)

  • Le TOUT packagé dans UN environnement : Meteor

Les 7 principes

1. Data on the Wire

  • Plus d’échange de fichier HTML après le premier appel

  • Utilisation du protocol DDP

    • Echange de EJSON sur WebSocket

    • Le serveur informe le client des changements

    • Des Methods : Remote Procedure Calls (RPC) fait par le client au serveur

2. One Language

  • JavaScript pour travailler coté serveur et client

  • Partage de code entre le client et le serveur

  • Possibilité d’utiliser d’autres langages, notamment CoffeeScript

3. Database Everywhere

  • MongoDB côté serveur

  • MiniMongo côté client

  • Une API partagée par le client et le serveur

  • Synchronisation entre les deux

4. Latency Compensation

  • Les données sont préfetchées coté client,

  • Une sensation d’hyper réactivité

  • Rollback côté client en cas d’erreurs survenues sur le serveur

5. Full Stack Reactivity

  • Meteor est basé sur la réactivité,

  • Les templates, les collections, les sessions .. tout est updaté au besoin

  • Le client est mis à jour systématiquement pour chaque changements côté serveur

6. Embrace the Ecosystem

  • Meteor est opensource (MIT)

  • Atmosphere propose près de 7987 packages

  • Vous pouvez facilement wrapper vos modules NodeJS

7. Simplicity Equals Productivity

  • Installation simple,

  • Pas de changements de contexte,

  • Développement efficace, des outils et des modules pour tout les besoins

Quickstart

Installer Meteor

curl https://install.meteor.com | sh

Créer votre app

meteor create jsc

Démarrer votre app

cd jsc
meteor

Demo Time

demo bdx

Methods

// Côté serveur
Meteor.method({
  "myMethod": function() {
    console.log('test');
  }
});
// Côté client
Meteor.call("myMethod", function (error) {
  if (error)
    throw new Meteor.Error("myMethod error")

});

Sécurisation

  • Enlevez les paquets autopublish et insecure

  • En entrée des methods, checkez vos paramètres

Meteor.methods({
  myMethod: function (userId) {
    check(userId, String);
    ...
  });

Testing

  • Velocity

  • Tests unitaires avec Mocha, Jasmine…​

  • Tests fonctionnels notamment Cucumber

  • Divers reporters

velocity

Déploiement

clever

Supervision

kadira

A noter

20M levés en Mai 2015

raise fund

Meteor 1.2 en Septembre 2015

meteor 1.2

Galaxy en Octobre 2015

meteor galaxy

Conclusions

Questions ?

Merci