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

ODP
Présentation de nodejs
 
PPTX
03 - [ASP.NET Core] Services RESTful et SPA
PDF
HTTP/2, quels impacts pour mon site WordPress ?
PPTX
Les Tests de Charge – From Zero To Hero
PDF
Introduction à WordPress sous Nginx
PPT
De Google+ à twitter en passant par le Cloud
PPTX
01 - [ASP.NET Core] Plénière
PPTX
Asp.net core 3
Présentation de nodejs
 
03 - [ASP.NET Core] Services RESTful et SPA
HTTP/2, quels impacts pour mon site WordPress ?
Les Tests de Charge – From Zero To Hero
Introduction à WordPress sous Nginx
De Google+ à twitter en passant par le Cloud
01 - [ASP.NET Core] Plénière
Asp.net core 3

Tendances (18)

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

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

PDF
Symposium n°7 : Plateforme Meteor
PDF
Node.js, le pavé dans la mare
PPTX
Introduction à meteor
PPTX
Initiation à Express js
ODP
Réu technodejs
PDF
Présentation Meteor soft shake
PDF
Node.js et les nouvelles technologies javascript
PPTX
Cours yeoman backbone box2d
PDF
Stage de fin d’études – dotcloud
PDF
Stage de fin d’études – dotcloud
PPTX
Introduction à Node.js
PDF
NodeJs in real life
KEY
Node.js et MongoDB: Mongoose
PDF
Framework JavaScript Web - Brief techno
PDF
Apéro techno node.js + AngularJS @Omnilog 2014
PDF
Cloud native chapitre 2 presentation.pdf
PDF
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
PDF
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
PPTX
Comment réussir son projet en Angular 1.5 ?
Symposium n°7 : Plateforme Meteor
Node.js, le pavé dans la mare
Introduction à meteor
Initiation à Express js
Réu technodejs
Présentation Meteor soft shake
Node.js et les nouvelles technologies javascript
Cours yeoman backbone box2d
Stage de fin d’études – dotcloud
Stage de fin d’études – dotcloud
Introduction à Node.js
NodeJs in real life
Node.js et MongoDB: Mongoose
Framework JavaScript Web - Brief techno
Apéro techno node.js + AngularJS @Omnilog 2014
Cloud native chapitre 2 presentation.pdf
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
Conférence #nwxtech5 : Introduction à Backbone.js par Hugo Larcher
Comment réussir son projet en Angular 1.5 ?
Publicité

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/