La plateforme JS 360°
par Evan Liomain
Quels sont les enjeux d'aujourd'hui et demain ?
Enjeux
- UI/UX Moderne
- Pas de rafraichissement manuel
- Compatible tout navigateur, mobile et plus
- Donnée en temps réel
Plateformes historiques du marché
Inconvénients
- Langages client/serveur différents (hors java avec GWT)
- Pas de partage de code entre client et serveur
- donc pas d'isomorphisme possible
Solution
La plateforme JS
Historique de la plateforme MeteorJS
Qui est derrière le rideau ?
-
MDG : Meteor Development Group (fondé en 2011)
- La communauté
Depuis combien de temps ?
Premier commit github le 18/11/2011
v0.0.40 le 11/12/2011
v1.0 le 17/03/2015
v1.1 le 31/03/2015
v1.2 le 21/09/2015
v1.3 le 28/03/2016
Les fonctionnalités de la plateforme
Ce que je peux faire avec
web
mobile
appli desktop
code server
Fonctionnalités du client en ligne de commande
Soft et framework associé
-
Base de donnée MongoDB 3.0
et MiniMongo
-
Gestionnaire de websocket
-
Moteur de templating :
- Blaze, par défaut
-
AngularJS depuis 1.2
- ReactJS depuis 1.2
-
Support de npm
-
Pour < 1.3
- via un hack avec le package meteorhacks:npm
- via un package wrapper pour Meteor
-
A partir de 1.3 :
disponible en import direct
OS supportés
- Mac OSX
- Linux
- Windows depuis 1.1
Installation / Création / Exécution / Déploiement
Installation
Pour Mac & Linux
curl https://install.meteor.com/ | sh
Pour Windows
installer
Création du projet
meteor create my-project
cd my-project
- Fichier de demo : my-project.js, my-project.html, my-project.css
- Répertoire : .meteor
- Configure correctement les .gitignore
Lancement du projet en local
meteor
Déploiement sur un environnement de demo ou sur galaxy
meteor deploy my_awesome_project.meteor.com
Déploiement sur un autre serveur ?
Plus compliqué, mais peu être fait via des packages npm tierce comme :
3 types de code
Dans le même fichier
if (Meteor.isServer) {
// Exécuté sur le serveur
}
if (Meteor.isClient) {
// Exécuté dans le navigateur web
}
// Exécuté sur le serveur et le client
3 types de code
Dans des fichiers différents
-
user
-
client
-
server
- user.model.js
Quels fichiers sont buildés ?
- code serveur : tous fichiers hors client, tests, public, et private
- code client : tous fichiers hors server, tests, public, et private
- asset serveur : tous fichiers contenus dans private
-
asset client : tous fichiers contenus dans public, servis tels quels
-
exemple : pour public/bg.png
<img src="/bg.png">
Dans quel ordre sont-ils buildés ?
Pour < 1.3
- Template HTML en premier
-
Pour un répertoire donné, les fichiers :
- du sous-répertoire lib/ sont chargés en premier
- sont chargés par ordre alphabêtique
- des sous-répertoires (hors lib/)
- main.* sont chargés en dernier
Utilisation d'un document MongoDB
Création
MyList = new Mongo.Collection('myList');
Récupération
MyList.find({});
Insertion
MyList.insert({
text : 'example',
createdAt : new Date() // current time
});
Edition
MyList.update(this._id, {
$set : { text : 'new example' }
});
Suppression
MyList.remove(this._id);
Utilisation d'un package
Authentification OAUTH de google
Ajout des packages
meteor add accounts-ui accounts-google service-configuration
Configuration (server)
ServiceConfiguration.configurations.upsert({
service : 'google'
}, {
$set : {
clientId : '{votre client id}',
loginStyle : 'popup',
secret : '{votre secret}'
}
});
Affichage
{{> loginButtons}}
{{#if loggingIn}} Vous êtes en cours de connexion {{/if}}
{{#if currentUser}} Vous êtes connecté {{/if}}
Le projet
- Une liste de course partagée
- Authentification oauth google
- Disponible en web app et mobile
La stack
-
Meteor 1.2
-
Angular 1.4
-
Angular Material
Points forts
-
Nul besoin de s'occuper de la gestion de la build
-
Base de donnée disponible sans effort
-
Données temps réel disponibles sans effort
-
Déploiement sur l'environnement de demo
-
Code serveur, client et mobile partagé
-
Livereload client et serveur
-
Package fullstack
-
Composant material-design à disposition
-
Simplicité d'utilisation d'angular
Points faibles
-
Build et livereload + lent qu'avec gulp ou webpack
-
Indisponibilité de la plateforme de demo pendant le chargement l'application par le serveur
-
Tout les développements devraient respecter les contraintes du mobile :
- Taille de l'écran
- Réseau lent
- Gestion du touch
-
Changement d'API d'angular-meteor entre 1.2 et 1.3
Quelques liens utiles
Liens officiels
Quelques liens utiles
En français
Quelques liens utiles
Avec ReactJS
Quelques liens utiles
Avec AngularJS
Avez vous des questions ?
La plateforme JS 360°
par Evan Liomain