meteor

Post on 10-May-2015

707 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Meteor 0.7 presentation

TRANSCRIPT

MeteorMeteorMeteorMeteor

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

Lets check some historyLets check some history

Why next generation?Why next generation?

HistoryHistory

HistoryHistory

HistoryHistory

HistoryHistory

HistoryHistory

ArchitectureArchitecture

ArchitectureArchitecture

WebSockets

Fibers

Scaling Real-Time MongoDB queries (v0.7)

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

Javascript only

Database Everywhere

So what is Meteor?So what is Meteor?

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

AUTOPUBLISH

INSECURE

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

$ 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?

if (Meteor.isServer) {

}

if (Meteor.isClient) {

}

How it works?How it works?

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

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

<template name=“my_template”>

</template>

Lets start from Lets start from templatetemplate

Router.map(function() {

this.route('my_template', {

path: ‘/my_template/:_id',

renderTemplates: {

'top_bar': {to: 'top_bar'}

},

template: ‘my_template’,

data: function() {…}

}

RoutingRouting

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

Session.get(“locations");

{{ locations }}

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

Reactive dataReactive data

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

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

});

Meteor.subscribe("locations");

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

Locations.allow({

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

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

remove: function(userId, doc) {…}

});

ThatThat’’s all the magics all the magic

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

PackagesPackages

accounts-ui

backbone

bootstrap

coffeescript

jquery

less

underscore

d3

PackagesPackages

Django Packages - 2069

Atmosphere - 794

Python Packages - 37653

Npm Packages - 51269

CommunityCommunity

The teamThe team

12 core developers

Got 11.2M$ investment in July 2012

Very large community

http://madewith.meteor.com/

Who uses meteor?Who uses meteor?

How do I start?How do I start?

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?

http://about.me/alexarsh

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

Demo time !!!Demo time !!!

top related