SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
METEOR
You're going to love full-stack JavaScript. At last.Arnaud Weil @epo
© Arnaud Weil @epo
Sondage: aimez-vous JavaScript ?
Je déteste JavaScript
J’adore JavaScript
Sans opinion
© Arnaud Weil @epo
Créer une application Web aujourd’hui
 ASP.NET
 Java
 Node.JS
 PHP
 Ruby on Rails
 …
 (jQuery)
 Angular
 Blaze
 Knockout
 React
 …
Serveur Client
© Arnaud Weil @epo
ASP.NET c’est bien mais…
 Les WebForms ne produisent pas de HTML5 ou
JSON
 SPA
 MVC, C#, Razor pour le bas niveau
 Code client en JavaScript et Angular / React / …
 Beaucoup de boulot
© Arnaud Weil @epo
La jungle Node.JS
 Node.JS, Express, React, WebPack, Browserify,
Babel, Reload, Gulp, Yeoman
 Mais JavaScript fatigue
© Arnaud Weil @epo
Pourquoi Meteor ?
 Basé sur Node.JS
 Multi-plateforme comme .NET Core
 Simple
 Ca va très, très vite
© Arnaud Weil @epo
La simplicité
meteor create appli
cd appli
meteor
Un début de projet
Démo 1
© Arnaud Weil @epo
Le cahier des charges
 Startup
 Fil de discussion
 Temps-réel
 Base de données
 Pour demain
Un peu de HTML et de JavaScript
Démo 2
© Arnaud Weil @epo
MongoDB
 NoSQL: pas de schéma
 Parfait pour du prototypage
 Equivalent d’un SELECT:
 Equivalent d’un INSERT:
db.collection.find({});
db.collection.insert({ name: "John", age: 25 });
Lire et écrire dans la base en ligne de
commande
Démo 3
© Arnaud Weil @epo
Code isomorphique
 Du temps gagné
 Collections MongoDB
 Schémas
 Routage
 Votre logique fonctionnelle
 …
© Arnaud Weil @epo
Synchro MongoDB
 new Meteor.Collection("nom");
MongoDB
Navigateur
Serveur
MeteorCache
MiniMongo
Synchro
temps-réel
Ecrire dans la base en JavaScript
Démo 4
© Arnaud Weil @epo
Au fait…
Ajout côté
client
Envoi au
serveur
Ajout côté
serveur
Gestion
conflits
Push vers
clients
© Arnaud Weil @epo
Donner vie au HTML
 React, Angular, …
 Blaze
<h1>Comments</h1>
<ul>
{{#each message in messages}}
<li>{{message.title}} - by {{message.author}}</li>
{{/each}}
</ul>
© Arnaud Weil @epo
Template.messagesDisplay.helpers({
hasMessages: function() {
return true;
},
messages: function(param1, param2) {
return ['Hello', 'Important message'];
},
});
Lire dans la base en JavaScript
Démo 5
© Arnaud Weil @epo
Mais!
 Et le temps réel dans tout ça ?
Push temps-réel
Démo 6
© Arnaud Weil @epo
Faisons le ménage
© Arnaud Weil @epo
Routage
 meteor add iron:router
Router.route('/message', function () {
this.render('messagesDisplay');
});
Router.route('/message/:id', function () {
var id = this.params.id;
this.render('messagesDisplay',
{ data: { id: id } }
);
});
© Arnaud Weil @epo
Routage avec modèles
<template name="mainLayout">
<h1>My awesome application</h1>
<div class="mainContent">
{{> yield}}
</div>
</template>
Router.configure({
layoutTemplate: 'mainLayout'
});
Routage, template, Bootstrap
Démo 7
© Arnaud Weil @epo
Schémas
 meteor add aldeed:simple-schema
 meteor add aldeed:collection2
Products = new Mongo.Collection('products');
Products.attachSchema(new SimpleSchema({
title: {
type: String
},
price: {
type: Number
}
}));
© Arnaud Weil @epo
Autoform
 meteor add aldeed:autoform
{{> quickForm collection="Books"
id="someId" type="insert"}}
Schéma et autoform
Démo 8
© Arnaud Weil @epo
Identification
 Meteor.user()
 Providers: accounts-password, accounts-facebook,
accounts-google, …
 UI toute prête ou ian:accounts-ui-bootstrap-3
 {{> loginButtons}}
 useraccounts:bootstrap, useraccounts:materialize, …
 {{> atForm}} {{> atNavButton}}
© Arnaud Weil @epo
Navigation et identification
 useraccounts:iron-routing
AccountsTemplates.configure({
defaultLayout: 'layout',
});
Router.plugin('ensureSignedIn', {
only: ['prices', 'admin'],
except: ...
});
© Arnaud Weil @epo
Le livre
 http://tinyurl.com/devdaybe (ebook, 50% jusqu’au 4)
 https://www.amazon.fr/dp/1365291200
© Arnaud Weil @epo
Les livres
 Learn ASP.NET MVC
 Learn Meteor
 Learn WPF MVVM
http://arnaudweil.blogspot.be/

Contenu connexe

Tendances

Angular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGAngular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGWilliam Marques
 
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, LinuxYasmine Amrani
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC Cellenza
 
Bien qu'en ligne votre site web n'est probablement pas en production
Bien qu'en ligne votre site web n'est probablement pas en productionBien qu'en ligne votre site web n'est probablement pas en production
Bien qu'en ligne votre site web n'est probablement pas en productionMarc Boivin
 
Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Quentin Frémeaux
 
Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Quentin Frémeaux
 
04 - [ASP.NET Core] Entity Framework Core
04 - [ASP.NET Core] Entity Framework Core 04 - [ASP.NET Core] Entity Framework Core
04 - [ASP.NET Core] Entity Framework Core Cellenza
 
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016Ori Pekelman
 
Non-regression testing in web app development
Non-regression testing in web app developmentNon-regression testing in web app development
Non-regression testing in web app developmentCédric Villa
 
Migration de données… Destination WordPress !
Migration de données… Destination WordPress !Migration de données… Destination WordPress !
Migration de données… Destination WordPress !Willy Bahuaud
 
Le développement web : tour d'horizon
Le développement web : tour d'horizonLe développement web : tour d'horizon
Le développement web : tour d'horizonMicrosoft
 

Tendances (18)

Angular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUGAngular + JHipster @ Paris JUG
Angular + JHipster @ Paris JUG
 
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
 
02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC 02 - [ASP.NET Core] ASP.NET Core MVC
02 - [ASP.NET Core] ASP.NET Core MVC
 
Bien qu'en ligne votre site web n'est probablement pas en production
Bien qu'en ligne votre site web n'est probablement pas en productionBien qu'en ligne votre site web n'est probablement pas en production
Bien qu'en ligne votre site web n'est probablement pas en production
 
Présentation de Node.js
Présentation de Node.jsPrésentation de Node.js
Présentation de Node.js
 
Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)
 
Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)
 
04 - [ASP.NET Core] Entity Framework Core
04 - [ASP.NET Core] Entity Framework Core 04 - [ASP.NET Core] Entity Framework Core
04 - [ASP.NET Core] Entity Framework Core
 
Upload - Download
Upload - DownloadUpload - Download
Upload - Download
 
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
 
Meetup laravel
Meetup laravelMeetup laravel
Meetup laravel
 
Introduction à Vaadin
Introduction à VaadinIntroduction à Vaadin
Introduction à Vaadin
 
Service Workers
Service WorkersService Workers
Service Workers
 
Meteor js 1.0
Meteor js 1.0Meteor js 1.0
Meteor js 1.0
 
Non-regression testing in web app development
Non-regression testing in web app developmentNon-regression testing in web app development
Non-regression testing in web app development
 
Meetup aix-js-28-08-2017
Meetup aix-js-28-08-2017Meetup aix-js-28-08-2017
Meetup aix-js-28-08-2017
 
Migration de données… Destination WordPress !
Migration de données… Destination WordPress !Migration de données… Destination WordPress !
Migration de données… Destination WordPress !
 
Le développement web : tour d'horizon
Le développement web : tour d'horizonLe développement web : tour d'horizon
Le développement web : tour d'horizon
 

Similaire à Meteor: you're going to love full-stack JavaScript. At last.

Kubernetes et Docker sur Azure et Windows
Kubernetes et Docker sur Azure et WindowsKubernetes et Docker sur Azure et Windows
Kubernetes et Docker sur Azure et WindowsArnaud Weil
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?Microsoft
 
Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloudstefounet
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?benjguin
 
ASP.NET Core: Pourquoi, comment
ASP.NET Core: Pourquoi, commentASP.NET Core: Pourquoi, comment
ASP.NET Core: Pourquoi, commentArnaud Weil
 
J'ai fait une app native en React Native
J'ai fait une app native en React NativeJ'ai fait une app native en React Native
J'ai fait une app native en React NativeCocoaHeads France
 
ASP.NET Core: Pourquoi, comment
ASP.NET Core:Pourquoi, commentASP.NET Core:Pourquoi, comment
ASP.NET Core: Pourquoi, commentArnaud Weil
 
Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?Quentin Adam
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptKhalid Jebbari
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!CARA_Lyon
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!CARA_Lyon
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Julien Jakubowski
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache MavenArnaud Héritier
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.jsTelecomValley
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Luc Juggery
 

Similaire à Meteor: you're going to love full-stack JavaScript. At last. (20)

Kubernetes et Docker sur Azure et Windows
Kubernetes et Docker sur Azure et WindowsKubernetes et Docker sur Azure et Windows
Kubernetes et Docker sur Azure et Windows
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloud
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
ASP.NET Core: Pourquoi, comment
ASP.NET Core: Pourquoi, commentASP.NET Core: Pourquoi, comment
ASP.NET Core: Pourquoi, comment
 
J'ai fait une app native en React Native
J'ai fait une app native en React NativeJ'ai fait une app native en React Native
J'ai fait une app native en React Native
 
ASP.NET Core: Pourquoi, comment
ASP.NET Core:Pourquoi, commentASP.NET Core:Pourquoi, comment
ASP.NET Core: Pourquoi, comment
 
Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?Parisweb - javascript server side - par où commencer ?
Parisweb - javascript server side - par où commencer ?
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
Node.js
Node.jsNode.js
Node.js
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Native script
Native scriptNative script
Native script
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
HTML5... La révolution maintenant!
HTML5... La révolution maintenant!HTML5... La révolution maintenant!
HTML5... La révolution maintenant!
 
La Rochelle workshop 2016
La Rochelle workshop 2016La Rochelle workshop 2016
La Rochelle workshop 2016
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3
 

Meteor: you're going to love full-stack JavaScript. At last.

  • 1. METEOR You're going to love full-stack JavaScript. At last.Arnaud Weil @epo
  • 2. © Arnaud Weil @epo Sondage: aimez-vous JavaScript ? Je déteste JavaScript J’adore JavaScript Sans opinion
  • 4. Créer une application Web aujourd’hui  ASP.NET  Java  Node.JS  PHP  Ruby on Rails  …  (jQuery)  Angular  Blaze  Knockout  React  … Serveur Client
  • 5. © Arnaud Weil @epo ASP.NET c’est bien mais…  Les WebForms ne produisent pas de HTML5 ou JSON  SPA  MVC, C#, Razor pour le bas niveau  Code client en JavaScript et Angular / React / …  Beaucoup de boulot
  • 6. © Arnaud Weil @epo La jungle Node.JS  Node.JS, Express, React, WebPack, Browserify, Babel, Reload, Gulp, Yeoman  Mais JavaScript fatigue
  • 7. © Arnaud Weil @epo Pourquoi Meteor ?  Basé sur Node.JS  Multi-plateforme comme .NET Core  Simple  Ca va très, très vite
  • 8. © Arnaud Weil @epo La simplicité meteor create appli cd appli meteor
  • 9. Un début de projet Démo 1
  • 10. © Arnaud Weil @epo Le cahier des charges  Startup  Fil de discussion  Temps-réel  Base de données  Pour demain
  • 11. Un peu de HTML et de JavaScript Démo 2
  • 12. © Arnaud Weil @epo MongoDB  NoSQL: pas de schéma  Parfait pour du prototypage  Equivalent d’un SELECT:  Equivalent d’un INSERT: db.collection.find({}); db.collection.insert({ name: "John", age: 25 });
  • 13. Lire et écrire dans la base en ligne de commande Démo 3
  • 14. © Arnaud Weil @epo Code isomorphique  Du temps gagné  Collections MongoDB  Schémas  Routage  Votre logique fonctionnelle  …
  • 15. © Arnaud Weil @epo Synchro MongoDB  new Meteor.Collection("nom"); MongoDB Navigateur Serveur MeteorCache MiniMongo Synchro temps-réel
  • 16. Ecrire dans la base en JavaScript Démo 4
  • 17. © Arnaud Weil @epo Au fait… Ajout côté client Envoi au serveur Ajout côté serveur Gestion conflits Push vers clients
  • 18. © Arnaud Weil @epo Donner vie au HTML  React, Angular, …  Blaze <h1>Comments</h1> <ul> {{#each message in messages}} <li>{{message.title}} - by {{message.author}}</li> {{/each}} </ul>
  • 19. © Arnaud Weil @epo Template.messagesDisplay.helpers({ hasMessages: function() { return true; }, messages: function(param1, param2) { return ['Hello', 'Important message']; }, });
  • 20. Lire dans la base en JavaScript Démo 5
  • 21. © Arnaud Weil @epo Mais!  Et le temps réel dans tout ça ?
  • 23. © Arnaud Weil @epo Faisons le ménage
  • 24. © Arnaud Weil @epo Routage  meteor add iron:router Router.route('/message', function () { this.render('messagesDisplay'); }); Router.route('/message/:id', function () { var id = this.params.id; this.render('messagesDisplay', { data: { id: id } } ); });
  • 25. © Arnaud Weil @epo Routage avec modèles <template name="mainLayout"> <h1>My awesome application</h1> <div class="mainContent"> {{> yield}} </div> </template> Router.configure({ layoutTemplate: 'mainLayout' });
  • 27. © Arnaud Weil @epo Schémas  meteor add aldeed:simple-schema  meteor add aldeed:collection2 Products = new Mongo.Collection('products'); Products.attachSchema(new SimpleSchema({ title: { type: String }, price: { type: Number } }));
  • 28. © Arnaud Weil @epo Autoform  meteor add aldeed:autoform {{> quickForm collection="Books" id="someId" type="insert"}}
  • 30. © Arnaud Weil @epo Identification  Meteor.user()  Providers: accounts-password, accounts-facebook, accounts-google, …  UI toute prête ou ian:accounts-ui-bootstrap-3  {{> loginButtons}}  useraccounts:bootstrap, useraccounts:materialize, …  {{> atForm}} {{> atNavButton}}
  • 31. © Arnaud Weil @epo Navigation et identification  useraccounts:iron-routing AccountsTemplates.configure({ defaultLayout: 'layout', }); Router.plugin('ensureSignedIn', { only: ['prices', 'admin'], except: ... });
  • 32. © Arnaud Weil @epo Le livre  http://tinyurl.com/devdaybe (ebook, 50% jusqu’au 4)  https://www.amazon.fr/dp/1365291200
  • 33. © Arnaud Weil @epo Les livres  Learn ASP.NET MVC  Learn Meteor  Learn WPF MVVM http://arnaudweil.blogspot.be/