Meteor (framework)
# Meteor (framework)

Meteor est un framework open-source de développement web en JavaScript fondé sur Node.js. Le projet vise à créer un framework de « nouvelle génération » induisant un changement de paradigme notamment sur la manière de considérer les architectures client-serveur.

Le projet est sorti en version stable 1.0 le 28 octobre 2014.

## Principes

Meteor permet de développer avec le même langage (en Javascript ou dans un langage compilant vers Javascript comme CoffeeScript ou Dart) et avec la même API sur le client et sur le serveur. Ce choix d’architecture permet de déplacer facilement un traitement du serveur vers le client (et réciproquement) voire de le dupliquer par exemple dans le cas de la validation d'un formulaire.

Dans cette logique, Meteor inclut un système de gestion de base de données côté client, fonctionnalité originale du framework. Il est ainsi possible d'effectuer des requêtes même en étant déconnecté du serveur. Cela permet notamment à Meteor d'inclure par défaut, des mécanismes de compensation de latence. Par exemple, l'envoi d'un message dans un chat sera instantanément ajouté au fil des messages au clic sur le bouton "Envoyer", tandis que la vérification du message se fera en arrière-plan côté serveur. Ce mécanisme permet l'utilisation de la programmation réactive côté client.

## Histoire

Initialement nommé Skybreak, le projet est renommé Meteor le 20 janvier 2012. Le 25 juillet 2012, l'équipe responsable du projet annonce une levée de fonds de 11,2 millions de dollars assurant ainsi la pérennité à moyen terme du projet et permettant d'animer une communauté autour de lui.

### Historique des versions

| | Code des couleurs |
| - | - |
| Rouge | Ancienne version, non supportée |
| Vert | Version actuelle, supportée |
| Bleu | Version à venir |
| $N^o$ | Version | Date de publication |
| 1 | 0.1 | |
| 2 | 0.2 | |
| 3 | 0.3 | |
| 4 | 0.4 | |
| 5 | 0.5 | |
| 6 | 0.6 | |
| 7 | 0.7 | 12 décembre 2013 |
| 8 | 0.8 | |
| 9 | 0.9 | |
| 10 | 1.0 | 28 octobre 2014 |
| 11 | 1.1 | 31 mars 2015 |
| 12 | 1.2 | 21 septembre 2015 |
| 13 | 1.3 | 28 mars 2016 |
| 14 | 1.4 | 25 juillet 2016 |
| 15 | 1.5 | 30 mai 2017 |
| 16 | 1.6 | 30 octobre 2017 |
| 17 | 1.7 | 28 mai 2018 |
| 18 | 1.8 | 8 octobre 2018 |

## Forces de Meteor

### Les forces

* Communauté : Meteor dispose d'une communauté active autour du projet. Il fait partie des dix projets les plus étoilés de github.
* Embrace the Ecosystem : Meteor est un framework complètement open-source, de même que ses composants et ses nombreux plugins.
* Meteor est fortement modulable grâce à ses briques autonomes (smart packages) officielles ou issues de la communauté et répertoriées sur atmospherejs.com
* "Data on the Wire" : Contrairement à PHP et ses frameworks, 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.
* Un seul langage : Meteor se basant sur Node.js, il en reprend son principe : "du JavaScript côté serveur".
* Base de données partout : Dans Meteor, il est possible d’accéder à la base de données depuis le client comme depuis le serveur.
* Compensation des latences : Meteor étant basé sur le temps réel, il demeure une latence, même très faible. C'est pourquoi il prend soin de compenser cette latence dans le navigateur : plutôt que d'attendre que les données envoyées ne soient renvoyées, il modifie l'affichage en avance. Ainsi, la sensation de latence disparaît complètement.
* "Full Stack Reactivity" : Absolument tout dans Meteor peut changer à n'importe quel moment dans le navigateur du client, et ce sans que le client n'ait effectué une seule requête.
* Au niveau du SEO, Meteor est maintenant optimisé pour faire indexer le contenu grâce au plugin spiderable.
