33
METEOR You're going to love full-stack JavaScript. At last. Arnaud Weil @epo

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

Embed Size (px)

Citation preview

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

METEOR

You're going to love full-stack JavaScript. At last.Arnaud Weil @epo

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

© Arnaud Weil @epo

Sondage: aimez-vous JavaScript ?

Je déteste JavaScript

J’adore JavaScript

Sans opinion

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

© Arnaud Weil @epo

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

Créer une application Web aujourd’hui

ASP.NET

Java

Node.JS

PHP

Ruby on Rails

(jQuery)

Angular

Blaze

Knockout

React

Serveur Client

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

© 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

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

© Arnaud Weil @epo

La jungle Node.JS

Node.JS, Express, React, WebPack, Browserify,

Babel, Reload, Gulp, Yeoman

Mais JavaScript fatigue

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

© Arnaud Weil @epo

Pourquoi Meteor ?

Basé sur Node.JS

Multi-plateforme comme .NET Core

Simple

Ca va très, très vite

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

© Arnaud Weil @epo

La simplicité

meteor create appli

cd appli

meteor

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

Un début de projet

Démo 1

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

© Arnaud Weil @epo

Le cahier des charges

Startup

Fil de discussion

Temps-réel

Base de données

Pour demain

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

Un peu de HTML et de JavaScript

Démo 2

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

© 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 });

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

Lire et écrire dans la base en ligne de

commande

Démo 3

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

© Arnaud Weil @epo

Code isomorphique

Du temps gagné

Collections MongoDB

Schémas

Routage

Votre logique fonctionnelle

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

© Arnaud Weil @epo

Synchro MongoDB

new Meteor.Collection("nom");

MongoDB

Navigateur

Serveur

MeteorCache

MiniMongo

Synchro

temps-réel

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

Ecrire dans la base en JavaScript

Démo 4

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

© Arnaud Weil @epo

Au fait…

Ajout côté client

Envoi au serveur

Ajout côté serveur

Gestion conflits

Push vers clients

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

© 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>

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

© Arnaud Weil @epo

Template.messagesDisplay.helpers({

hasMessages: function() {

return true;

},

messages: function(param1, param2) {

return ['Hello', 'Important message'];

},

});

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

Lire dans la base en JavaScript

Démo 5

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

© Arnaud Weil @epo

Mais!

Et le temps réel dans tout ça ?

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

Push temps-réel

Démo 6

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

© Arnaud Weil @epo

Faisons le ménage

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

© Arnaud Weil @epo

Routage

meteor add iron:routerRouter.route('/message', function () {

this.render('messagesDisplay');

});

Router.route('/message/:id', function () {

var id = this.params.id;

this.render('messagesDisplay',

{ data: { id: id } }

);

});

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

© 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'

});

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

Routage, template, Bootstrap

Démo 7

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

© 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

}

}));

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

© Arnaud Weil @epo

Autoform

meteor add aldeed:autoform

{{> quickForm collection="Books"

id="someId" type="insert"}}

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

Schéma et autoform

Démo 8

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

© 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}}

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

© Arnaud Weil @epo

Navigation et identification

useraccounts:iron-routing

AccountsTemplates.configure({

defaultLayout: 'layout',

});

Router.plugin('ensureSignedIn', {

only: ['prices', 'admin'],

except: ...

});

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

© Arnaud Weil @epo

Le livre

http://tinyurl.com/devdaybe (ebook, 50% jusqu’au 4)

https://www.amazon.fr/dp/1365291200

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

© Arnaud Weil @epo

Les livres

Learn ASP.NET MVC

Learn Meteor

Learn WPF MVVM

http://arnaudweil.blogspot.be/