node js oc meetup 1

18
Meetup #1 Farsheed & Eddy Sponsored by Drumbi

Upload: eddify

Post on 15-Jan-2015

644 views

Category:

Technology


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: NODE JS OC Meetup 1

Meetup #1

Farsheed & EddySponsored by Drumbi

Page 2: NODE JS OC Meetup 1

Food for Thought

● Packages per day across popular platforms

● Source: https://blog.nodejitsu.com/npm-innovation-through-modularity

Page 3: NODE JS OC Meetup 1

Who We Are

● Farsheed Atef● @captainatef● [email protected]

● Eddy Kim● @EddyDKim● [email protected]

● Drumbi ● Drumbi.com● Blog.Drumbi.com● @getdrumbi

Page 4: NODE JS OC Meetup 1

Overview

● What is Node.js● Why Node.js● Benefits● JavaScript● Modularity● Scalability● Architecture● Resources/Documentation● Hands On

Page 5: NODE JS OC Meetup 1

What is Node.js

● A framework for developing I/O based javascript server applications● Node.js is a set of bindings to the V8 javascript VM.

● V8 is Google's open source JavaScript engine.● Used in Chrome● Standalone or embedded● Octane (https://developers.google.com/octane/)

● Focused on performance

Page 6: NODE JS OC Meetup 1

Why Node.js

● Programmable Web● Internet of Devices● Requires: Scalable / Real-time

platform● Benchmark (take with grain of salt):

● 100 Concurrent clients● 1 megabyte response

● Node 822 req/sec● Nginx 708 req/sec● Thin 85 req/sec● Mongrel 4 req/sec

http = require(’http’)

Buffer = require(’buffer’).Buffer;

n = 1024*1024;

b = new Buffer(n);

for (var i = 0; i<n; i++) b[i] = 100;

http.createServer(function (req, res) {

res.writeHead(200);

res.end(b);

}).listen(80);

Page 7: NODE JS OC Meetup 1

Why Node.js

● Typical request● Request a page

● Do a bunch of client stuff● Load a bunch of static stuff● Load a bunch of dynamic stuff

● Call a web service (Network)● Call a Database (Network)● Database get data (Disk, CPU)● Format returned data (CPU, RAM)● display data (CPU, RAM)

Page 8: NODE JS OC Meetup 1

Why Node.js

● npm Packages● JavaScript on Server● Real-Time● Design Goals:

○ Built in support for DNS, HTTP, TLS

○ Stream Everything○ No function should directly

perform I/O○ Simple License MIT/BSD

● Be Careful○ Blocking operations

Page 9: NODE JS OC Meetup 1

Event Driven Programming

● Typical programming (multithreading - memory hungry):○ Ask for some data○ Wait for the person to enter○ Do something with the submitted data○ Display the results

● Functional programming:○ Ask for some data○ while waiting for the person to enter something, ask for data from someone

else, process some data, display results to someone whose data is ready.

Page 10: NODE JS OC Meetup 1

JavaScript

● First Class Functions● Lambdas● Available across all web browsers● Closures

Page 11: NODE JS OC Meetup 1

Why Javascript?

UbiquityCode Re-useExisting Skillset/Libraries

-moment js-underscore js

Page 12: NODE JS OC Meetup 1

Why Javascript?

Functions are 1st class objects

Ideally suited for Evented/Async Programming

Page 13: NODE JS OC Meetup 1

Why Javascript?

Functions as Objects in Async Programming

Page 14: NODE JS OC Meetup 1

Why Javascript?

Closures in a Nutshell● Allows Inner Functions to access variables in Outer Function

○ Very useful for event callback patterns

Page 15: NODE JS OC Meetup 1

Why Javascript?Closures in a Nutshell● Enables Data Encapsulation via local scopes

Page 16: NODE JS OC Meetup 1

Modularity

● NodeJS focuses on quality, small modules○ export via module.exports =○ import via require('moduleName')

Page 17: NODE JS OC Meetup 1

Resources

http://nodejs.org/

http://javascriptissexy.com/

http://stackoverflow.com/questions/2353818/how-do-i-get-started-with-node-js

[email protected]@drumbi.com

Page 18: NODE JS OC Meetup 1

Hands On

● Node JS Installation○ http://nodejs.org/download/

● Creating a hello world using Http Module

● Creating a web using Express Module