meteor

32
Meteor Meteor Next Generation Web Development Next Generation Web Development

Upload: arshavski-alexander

Post on 10-May-2015

707 views

Category:

Technology


0 download

DESCRIPTION

Meteor 0.7 presentation

TRANSCRIPT

Page 1: Meteor

MeteorMeteorMeteorMeteor

Next Generation Web DevelopmentNext Generation Web DevelopmentNext Generation Web DevelopmentNext Generation Web Development

Page 2: Meteor

Lets check some historyLets check some history

Why next generation?Why next generation?

Page 3: Meteor

HistoryHistory

Page 4: Meteor

HistoryHistory

Page 5: Meteor

HistoryHistory

Page 6: Meteor

HistoryHistory

Page 7: Meteor

HistoryHistory

Page 8: Meteor

ArchitectureArchitecture

Page 9: Meteor

ArchitectureArchitecture

WebSockets

Fibers

Scaling Real-Time MongoDB queries (v0.7)

Page 10: Meteor

Full reactive stack: Client <—> Server <—> DB

Javascript only

Database Everywhere

So what is Meteor?So what is Meteor?

Page 11: Meteor

Wait, what about Wait, what about security???security???

Page 12: Meteor

AUTOPUBLISH

INSECURE

Wait, what about Wait, what about security???security???

Page 13: Meteor

$ curl https://install.meteor.com | /bin/sh

$ meteor create myapp

$ cd myapp

$ meteor

=> Meteor server running on: http://localhost:3000/

$ meteor deploy myapp.meteor.com

How it works?How it works?

Page 14: Meteor

if (Meteor.isServer) {

}

if (Meteor.isClient) {

}

How it works?How it works?

Page 15: Meteor

F****** long fileF****** long file

Page 16: Meteor

my_project

server (server code)

client (client code)

compatibility (js libraries)

lib (loading first)

public (static files)

private (some private data)

tests

Lets split itLets split it

Page 17: Meteor

<template name=“my_template”>

</template>

Lets start from Lets start from templatetemplate

Page 18: Meteor

Router.map(function() {

this.route('my_template', {

path: ‘/my_template/:_id',

renderTemplates: {

'top_bar': {to: 'top_bar'}

},

template: ‘my_template’,

data: function() {…}

}

RoutingRouting

Page 19: Meteor

Template.my_template.rendered = function() {…}

Template.my_template.events({

'submit .my_form’: function (event) {…}

});

Template.my_template.helpers({

locations: function () {return Session.get("locations");}

});

JavascriptJavascript

Page 20: Meteor

Session.get(“locations");

{{ locations }}

Session.set(“locations”, {…});

Reactive dataReactive data

Page 21: Meteor

Publish and subscribePublish and subscribeMeteor.publish("locations", function () {

return Locations.find({ "user._id": this.userId });

});

Meteor.subscribe("locations");

Page 22: Meteor

INSECURE OFFINSECURE OFFLocations = new Meteor.Collection("locations");

Locations.allow({

insert: function(userId, doc) {…},

update: function(userId, doc, fields, modifier) {…},

remove: function(userId, doc) {…}

});

Page 23: Meteor

ThatThat’’s all the magics all the magic

Page 24: Meteor

What about testing?What about testing?

Laika (http://arunoda.github.io/laika/) - Testing framework for meteor

RTD (http://rtd.xolv.io/) - Test runner for meteor

TinyTestJS (https://github.com/bennadel/) - JavaScript unit testing framework

Page 25: Meteor

PackagesPackages

accounts-ui

backbone

bootstrap

coffeescript

jquery

less

underscore

d3

Page 26: Meteor

PackagesPackages

Django Packages - 2069

Atmosphere - 794

Python Packages - 37653

Npm Packages - 51269

Page 27: Meteor

CommunityCommunity

Page 28: Meteor

The teamThe team

12 core developers

Got 11.2M$ investment in July 2012

Very large community

Page 29: Meteor

http://madewith.meteor.com/

Who uses meteor?Who uses meteor?

Page 30: Meteor

How do I start?How do I start?

Page 31: Meteor

http://www.meteor.com/

http://www.discovermeteor.com/

https://www.eventedmind.com/

http://madewith.meteor.com/

https://trello.com/b/hjBDflxp/meteor-roadmap

Where to read?Where to read?

Page 32: Meteor

http://about.me/alexarsh

http://www.slideshare.net/alexarsh/

Demo time !!!Demo time !!!