SlideShare a Scribd company logo
Author: Bhushan Patil
Date: 08 Mar 2014
Nodejs






Node.js or nodejs or “node” simply is
“server side JavaScript”
Node.js is software platform
for scalable server-side and networking
applications.
Allows you to build scalable network
applications using JavaScript on the serverside.
Node.js
V8 JavaScript Runtime




The V8 JavaScript Engine is an open
source JavaScript engine developed
by Google for the Google Chrome web
browser.
V8 compiles JavaScript to native machine
code (IA-32, x86-64, ARM,
or MIPS ISAs) before executing it, instead
of more traditional techniques such as
executing bytecode or interpreting it.


“JavaScript has certain characteristics that

make it very different than other dynamic
languages, namely that it has no concept of
threads. Its model of concurrency is
completely based around events.” - Ryan
Dahl (Author node.js)




A Web Framework
For Beginners – it’s very low level
Multi-threaded – You can think of it as
single threaded server
Nodejs


Node js is for real-time web
◦ Node shines in real-time web applications
employing push technology over websockets Vs
stateless-web based on the stateless requestresponse paradigm.





Uses event-driven asynchronous callbacks

Handles concurrency very well than other
traditional web server
Traditional way
var result = database.query("SELECT * FROM hugetable");
console.log("Hello World");

Vs
Asynchronous way
database.query("SELECT * FROM hugetable", function(rows) {
var result = rows;
});
console.log("Hello World");
Nodejs
var
max
var
for

i, a, b, c, max;
= 1000000000;
d = Date.now();
(i = 0; i < max; i++) {
a = 1234 + 5678 + i;
b = 1234 * 5678 + i;
c = 1234 / 2 + i;

}
console.log(Date.now() - d);

$a = null; $b = null; $c = null; $i = null;
$max = 1000000000;
$start = microtime(true);
for ($i = 0; $i < $max; $i++) {
$a = 1234 + 5678 + $i;
$b = 1234 * 5678 + $i;
$c = 1234 / 2 + $i;
}
var_dump(microtime(true) - $start);

Time comparison in milliseconds

It means PHP is 93% slower than Node.js!
Nodejs





Websocket Server - like chat application
Fast File Upload Client
Ad Server
Any Real-Time Data Apps
Nodejs


No Need of separate Server
◦ it does not require a separate webserver like Apache
or Nginx or IIS. It has an inbuilt HTTP Server library
which makes it possible to run a webserver without
external software, and allowing more control of how
the webserver works.



Non-blocking code
◦ It does not execute line by line like other traditional
languages.



Asynchronous programming
◦ Every function in Node.js is asynchronous. Therefore,
everything that would normally block the thread is
instead executed in the background.
Blocking code
var contents = fs.readFileSync('/etc/hosts');
console.log(contents); //Stop process until complete
console.log('Doing something else');

Non-Blocking code
fs.readFile('/etc/hosts', function(err, contents) {
console.log(contents);
});
console.log('Doing something else');
Traditional way
var result = database.query("SELECT * FROM hugetable");
console.log("Hello World");

Asynchronous way
database.query("SELECT * FROM hugetable", function(rows) {
var result = rows;
});
console.log("Hello World");
Nodejs
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Worldn');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
If run at command prompt:

% node example.js
Server running at http://127.0.0.1:1337/
At browser: http://127.0.0.1:1337/

Hello World
Nodejs


npm, short for Node Package Manager, is
two things: first and foremost, it is an
online repository for the publishing of opensource Node.js projects; second, it is a
command-line utility for interacting with
said repository that aids in package
installation, version management, and
dependency management.








Some of the most popular NPM modules today are:
Express - Express.js, a Sinatra-inspired web
development framework for Node.js, and the defacto standard for the majority of Node.js
applications out there today.
connect - Connect is an extensible HTTP server
framework for Node.js, providing a collection of
high performance “plugins” known as
middleware; serves as a base foundation for
Express.
socket.io and sockjs - Server-side component of
the two most common websockets components
out there today.






Jade - One of the popular templating
engines, inspired by HAML, a default in
Express.js.
mongo and mongojs - MongoDB wrappers to
provide the API for MongoDB object databases in
Node.js.
redis - Redis client library.






coffee-script - CoffeeScript compiler that allows
developers to write their Node.js programs using
Coffee.
underscore (lodash, lazy) – The most popular
utility library in JavaScript, packaged to be used
with Node.js, as well as its two counterparts,
which promise better performance by taking a
slightly different implementation approach.
forever - Probably the most common utility for
ensuring that a given node script runs
continuously. Keeps your Node.js process up in
production in the face of any unexpected failures.
// Include http module,
var http = require('http'),
// And mysql module
mysql = require("mysql");
// Create the connection.
// Data is default to new mysql installation and should be changed according to your configuration.
var connection = mysql.createConnection({
user: "root",
password: "",
database: "db_name"
});
// Create the http server.
http.createServer(function (request, response) {
// Attach listener on end event.
request.on('end', function () {
// Query the database.
connection.query('SELECT * FROM your_table;', function (error, rows, fields) {
response.writeHead(200, {
'Content-Type': 'x-application/json'
});
// Send data as JSON string.
// Rows variable holds the result of the query.
response.end(JSON.stringify(rows));
});
});
// Listen on the 8080 port.
}).listen(8080);
Nodejs
And many .....
Nodejs
Nodejs







http://nodejs.org/
http://en.wikipedia.org/wiki/Nodejs
http://node.codeschool.com/
http://stackoverflow.com/questions/235381
8/how-do-i-get-started-with-node-js
http://code.tutsplus.com/tutorials/nodejsfor-beginners--net-26314
Nodejs

More Related Content

Nodejs

  • 3.    Node.js or nodejs or “node” simply is “server side JavaScript” Node.js is software platform for scalable server-side and networking applications. Allows you to build scalable network applications using JavaScript on the serverside. Node.js V8 JavaScript Runtime
  • 4.   The V8 JavaScript Engine is an open source JavaScript engine developed by Google for the Google Chrome web browser. V8 compiles JavaScript to native machine code (IA-32, x86-64, ARM, or MIPS ISAs) before executing it, instead of more traditional techniques such as executing bytecode or interpreting it.
  • 5.  “JavaScript has certain characteristics that make it very different than other dynamic languages, namely that it has no concept of threads. Its model of concurrency is completely based around events.” - Ryan Dahl (Author node.js)
  • 6.    A Web Framework For Beginners – it’s very low level Multi-threaded – You can think of it as single threaded server
  • 8.  Node js is for real-time web ◦ Node shines in real-time web applications employing push technology over websockets Vs stateless-web based on the stateless requestresponse paradigm.   Uses event-driven asynchronous callbacks Handles concurrency very well than other traditional web server
  • 9. Traditional way var result = database.query("SELECT * FROM hugetable"); console.log("Hello World"); Vs Asynchronous way database.query("SELECT * FROM hugetable", function(rows) { var result = rows; }); console.log("Hello World");
  • 11. var max var for i, a, b, c, max; = 1000000000; d = Date.now(); (i = 0; i < max; i++) { a = 1234 + 5678 + i; b = 1234 * 5678 + i; c = 1234 / 2 + i; } console.log(Date.now() - d); $a = null; $b = null; $c = null; $i = null; $max = 1000000000; $start = microtime(true); for ($i = 0; $i < $max; $i++) { $a = 1234 + 5678 + $i; $b = 1234 * 5678 + $i; $c = 1234 / 2 + $i; } var_dump(microtime(true) - $start); Time comparison in milliseconds It means PHP is 93% slower than Node.js!
  • 13.     Websocket Server - like chat application Fast File Upload Client Ad Server Any Real-Time Data Apps
  • 15.  No Need of separate Server ◦ it does not require a separate webserver like Apache or Nginx or IIS. It has an inbuilt HTTP Server library which makes it possible to run a webserver without external software, and allowing more control of how the webserver works.  Non-blocking code ◦ It does not execute line by line like other traditional languages.  Asynchronous programming ◦ Every function in Node.js is asynchronous. Therefore, everything that would normally block the thread is instead executed in the background.
  • 16. Blocking code var contents = fs.readFileSync('/etc/hosts'); console.log(contents); //Stop process until complete console.log('Doing something else'); Non-Blocking code fs.readFile('/etc/hosts', function(err, contents) { console.log(contents); }); console.log('Doing something else');
  • 17. Traditional way var result = database.query("SELECT * FROM hugetable"); console.log("Hello World"); Asynchronous way database.query("SELECT * FROM hugetable", function(rows) { var result = rows; }); console.log("Hello World");
  • 19. var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); If run at command prompt: % node example.js Server running at http://127.0.0.1:1337/ At browser: http://127.0.0.1:1337/ Hello World
  • 21.  npm, short for Node Package Manager, is two things: first and foremost, it is an online repository for the publishing of opensource Node.js projects; second, it is a command-line utility for interacting with said repository that aids in package installation, version management, and dependency management.
  • 22.     Some of the most popular NPM modules today are: Express - Express.js, a Sinatra-inspired web development framework for Node.js, and the defacto standard for the majority of Node.js applications out there today. connect - Connect is an extensible HTTP server framework for Node.js, providing a collection of high performance “plugins” known as middleware; serves as a base foundation for Express. socket.io and sockjs - Server-side component of the two most common websockets components out there today.
  • 23.    Jade - One of the popular templating engines, inspired by HAML, a default in Express.js. mongo and mongojs - MongoDB wrappers to provide the API for MongoDB object databases in Node.js. redis - Redis client library.
  • 24.    coffee-script - CoffeeScript compiler that allows developers to write their Node.js programs using Coffee. underscore (lodash, lazy) – The most popular utility library in JavaScript, packaged to be used with Node.js, as well as its two counterparts, which promise better performance by taking a slightly different implementation approach. forever - Probably the most common utility for ensuring that a given node script runs continuously. Keeps your Node.js process up in production in the face of any unexpected failures.
  • 25. // Include http module, var http = require('http'), // And mysql module mysql = require("mysql"); // Create the connection. // Data is default to new mysql installation and should be changed according to your configuration. var connection = mysql.createConnection({ user: "root", password: "", database: "db_name" }); // Create the http server. http.createServer(function (request, response) { // Attach listener on end event. request.on('end', function () { // Query the database. connection.query('SELECT * FROM your_table;', function (error, rows, fields) { response.writeHead(200, { 'Content-Type': 'x-application/json' }); // Send data as JSON string. // Rows variable holds the result of the query. response.end(JSON.stringify(rows)); }); }); // Listen on the 8080 port. }).listen(8080);