NodeJS
JS as a Server-side Language
Iraj Islam @irajislam
Nurul Ferdous @ferdous
NewsCred
Saturday, September 17, 2011
Agenda NewsCred
• Part 1. NodeJS
• Part 2. ExpressJS
• Questions?
Saturday, September 17, 2011
Who We Are NewsCred
Iraj Islam
CTO/Co-founder, NewsCred
Nurul Ferdous
Senior Software Engineer, NewsCred
Saturday, September 17, 2011
Part 1
NodeJS
NewsCred
Saturday, September 17, 2011
Server-side JS NewsCred
Saturday, September 17, 2011
What’s NodeJS? NewsCred
NodeJS
What’s this all about?
Saturday, September 17, 2011
What’s NodeJS? NewsCred
NodeJS
Evented I/O for V8 JavaScript.
Saturday, September 17, 2011
What’s NodeJS? NewsCred
Goal
“Provide an easy way to build scalable
network programs.”
Saturday, September 17, 2011
History NewsCred
The Evolution of the Web
From static pages to real time data.
Saturday, September 17, 2011
Why NodeJS? NewsCred
The Age of Big Data
Exabytes (1018) of data stored per year
1000
750
500
250
2006
2007
2008 0
2009
2010
Saturday, September 17, 2011
Why NodeJS? NewsCred
The Fast Food Analogy
Synchronous vs. Asynchronous
Saturday, September 17, 2011
Why NodeJS? NewsCred
The Apache Solution
Synchronous I/O
Application
File
User readFile(); System
getTweets(); Twitter
API
writeToDb(); MySQL
Saturday, September 17, 2011
Why NodeJS? NewsCred
The Apache Solution
Blocking I/O
Application
File
User readFile(); System
Waiting...
getTweets(); Twitter
API
Waiting...
writeToDb(); MySQL
Saturday, September 17, 2011
Why NodeJS? NewsCred
The NodeJS Solution
Asynchronous I/O
Application
File
User readFile(); System
getTweets(); Twitter
API
writeToDb(); MySQL
Saturday, September 17, 2011
Why NodeJS? NewsCred
The NodeJS Solution
Non-blocking I/O
Application
File
User readFile(); System
getTweets(); Twitter
API
writeToDb(); MySQL
Saturday, September 17, 2011
NodeJS Benefits NewsCred
• Fast
• Built on top of Google’s V8 JavaScript engine.
• Scalable
• Asynchronous, event-driven I/O model yields web scale.
• Programmable
• JavaScript API and pluggable module architecture.
Saturday, September 17, 2011
NodeJS Use Cases NewsCred
• Serving APIs
• Serving real-time apps
• Serving web apps
• Streaming data
Saturday, September 17, 2011
NodeJS “Hello World!” NewsCred
var http = require('http');
http.createServer(function (request, response) {
response.writeHead(200, {'Content-Type':
'text/plain'});
response.writeHead('Hello World!');
}).listen(1337, '127.0.0.1');
Saturday, September 17, 2011
Who’s Using NodeJS? NewsCred
Saturday, September 17, 2011
Installing NodeJS NewsCred
• Installing on Unix
• Installing on Windows
• Run http://nodejs.org/dist/v0.5.6/node.exe
Saturday, September 17, 2011
Installing npm NewsCred
• Node Package Manager (npm)
• One line install:
• curl http://npmjs.org/install.sh | sudo sh
• Multi-line install:
• Get the code from http://github.com/isaacs/npm
• Do what the REAMME says
Saturday, September 17, 2011
Part 2
ExpressJS
NewsCred
Saturday, September 17, 2011
What’s ExpressJS? NewsCred
ExpressJS
High-performance NodeJS
web framework.
Saturday, September 17, 2011
Why ExpressJS? NewsCred
• Full blown feature set
• Routing
• View rendering/templating
• Sessions
• Good documentation
• Lots of examples
• Many extensions
Saturday, September 17, 2011
Installing ExpressJS NewsCred
Saturday, September 17, 2011
Directory Structure NewsCred
Saturday, September 17, 2011
Configuration NewsCred
Saturday, September 17, 2011
Application Settings NewsCred
Saturday, September 17, 2011
Routing NewsCred
Saturday, September 17, 2011
View Rendering NewsCred
• Haml templates
• Haml
• Jade
• Embedded JavaScript (EJS) templates
• Coffeekup templates
• Uses CoffeeScript
• jQuery templates
Saturday, September 17, 2011
Views with Jade NewsCred
Saturday, September 17, 2011
Sessions NewsCred
• Currently cookie-based
• Data store can be Redis, memory etc.
Saturday, September 17, 2011
Packages NewsCred
$ npm install -d # for installing dependancies
Saturday, September 17, 2011
Resources NewsCred
• NodeJS
• http://nodejs.org
• http://github.com/dynamicguy/node-mongo-cms
• ExpressJS
• http://expressjs.com
• Sencha Connect
• http://github.com/senchalabs/connect/wiki
Saturday, September 17, 2011
Questions? NewsCred
Iraj Islam
iraj@newscred.com, @irajislam
Nurul Ferdous
nurul@newscred.com, @ferdous
Saturday, September 17, 2011