+ All Categories
Home > Technology > Next generation web development with node.js and meteor

Next generation web development with node.js and meteor

Date post: 10-May-2015
Category:
Upload: martin-naumann
View: 1,619 times
Download: 1 times
Share this document with a friend
Popular Tags:
15
Node.js and meteor Next generation web development for the realtime web Martin Naumann - Software Engineer Centralway Factory AG Submission #386
Transcript
Page 1: Next generation web development with node.js and meteor

Node.js and meteorNext generation web development for the realtime web

Martin Naumann - Software EngineerCentralway Factory AGSubmission #386

Page 2: Next generation web development with node.js and meteor

AGENDA

● What is node.js?● Why do you want it?● Comparison● Quick: express.js ● Even quicker: meteor.js● Meteor.js example● To node or not to node● Alternatives

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

Page 3: Next generation web development with node.js and meteor

What is node.js?

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

● Javascript on the server● event-driven architecture● asynchronous I/O● scalable● based on V8● modular

"Yeah. Nice buzzwords. What's the point?"

Page 4: Next generation web development with node.js and meteor

Why you want node.js?

● One instance can handle lots of clients○ reduced memory footprint○ get more performance from existing resources○ Benchmark: up to 1.600.000 concurrent requests

● Use your frontend technology on the backend○ you have Javascript in your application anyway○ "Oh look, this looks familiar!"○ You know your stuff: Callbacks, Closures, Asynchronity

● It's modular○ easy to connect pieces of code○ easy to write network code○ rapidly build complex applications

Level Two

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

Page 5: Next generation web development with node.js and meteor

Comparison: "Elders of web dev" vs. node.js

● HTTP is the base of all web applications● HTTP was synchronous.● Most of the web languages still are.● HTTP evolved:

○ AJAX○ Websockets○ Push

● real-time web● Need for asynchronous technologies

○ all of which are a bit weird in PHP, Java, ASP, etc.○ node.js is asynchronous and has ever been.

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

Page 6: Next generation web development with node.js and meteor

Quick! To the web app - with express

var express = require("express");var app = express.createServer();

app.get('/:msg', function(req, res) { res.send(req.params.msg);});

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

Page 7: Next generation web development with node.js and meteor

What boilerplate code is left?

● Setup the server● Route requests● Take care of HTTP● Data sychronisation● Persist data● Write an Interface (API)● Setup server-side and client-side code

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

Page 8: Next generation web development with node.js and meteor

Why not have...

● the code separated by conventions● the server automatically deliver it● automatic persistance● automatic synchronisation● automatically compensate latency

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

Page 9: Next generation web development with node.js and meteor

Quicker: meteor.js - A real-time app example

"So I heard you wanted to implement a chat app"● Write a server and a client● transmitting messages in nearly real-time● with multiple chatrooms● users can pick a nickname● users can create rooms● What do you think how many lines of code this requires?

54.Server and client together.7 are blank.

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

Page 10: Next generation web development with node.js and meteor

Meteor.js example: The server

var Rooms = new Meteor.Collection("rooms");var Messages = new Meteor.Collection("messages");

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

Yup. That's it.

Page 11: Next generation web development with node.js and meteor

Meteor.js example: The client I / II

Template.main.currentRoom = function (){return Session.get("room") || false;

};

Template.rooms.availableRooms = function (){return Rooms.find({});

};

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

Page 12: Next generation web development with node.js and meteor

Meteor.js example: The client II / II

Template.room.events = { "click #leave": function() { if(!window.confirm("Leave this room", "Really leave?")) return; Session.set("room", undefined); }, "submit": function() { Messages.insert({ "room": Session.get("room"), "author": Session.get("name"), "text": $("#msg").val() }); $("#msg").val(""); }};

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

Page 13: Next generation web development with node.js and meteor

To node or not to node - that shall be the question

● Where node does make sense○ real-time applications○ processing long-running or I/O intensive tasks

● Where it doesn't make sense○ static web pages○ small web applications for standard CRUD

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

Page 14: Next generation web development with node.js and meteor

Alternatives

● Ruby: EventMachine● Python: Twisted● PHP: Photon● Java: javaeventing● Perl: Mojo

JAZOON’12: Rookie Award, Next generation web development, Martin Naumann

Page 15: Next generation web development with node.js and meteor

Martin Naumann - www.geekonaut.deCentralway Factory AG - [email protected]@AVGP - github.com/AVGP

Thanks for listening!Questions?


Recommended