node js oc meetup 1
DESCRIPTION
TRANSCRIPT
Meetup #1
Farsheed & EddySponsored by Drumbi
Food for Thought
● Packages per day across popular platforms
● Source: https://blog.nodejitsu.com/npm-innovation-through-modularity
Who We Are
● Farsheed Atef● @captainatef● [email protected]
● Eddy Kim● @EddyDKim● [email protected]
● Drumbi ● Drumbi.com● Blog.Drumbi.com● @getdrumbi
Overview
● What is Node.js● Why Node.js● Benefits● JavaScript● Modularity● Scalability● Architecture● Resources/Documentation● Hands On
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
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);
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)
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
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.
JavaScript
● First Class Functions● Lambdas● Available across all web browsers● Closures
Why Javascript?
UbiquityCode Re-useExisting Skillset/Libraries
-moment js-underscore js
Why Javascript?
Functions are 1st class objects
Ideally suited for Evented/Async Programming
Why Javascript?
Functions as Objects in Async Programming
Why Javascript?
Closures in a Nutshell● Allows Inner Functions to access variables in Outer Function
○ Very useful for event callback patterns
Why Javascript?Closures in a Nutshell● Enables Data Encapsulation via local scopes
Modularity
● NodeJS focuses on quality, small modules○ export via module.exports =○ import via require('moduleName')
Resources
http://nodejs.org/
http://javascriptissexy.com/
http://stackoverflow.com/questions/2353818/how-do-i-get-started-with-node-js
[email protected]@drumbi.com
Hands On
● Node JS Installation○ http://nodejs.org/download/
● Creating a hello world using Http Module
● Creating a web using Express Module