Nodejs

Preview:

DESCRIPTION

Introduction to Node.js

Citation preview

Author: Bhushan PatilDate: 08 Mar 2014

What is Node.js?

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 server-side.

What is Node.js?

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. 

Google v8 JavaScript Engine

“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)

Why Javascript?

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

threaded server

What is node.js not?

Node.js Vs Traditional server side scripting

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 request-response paradigm.

Uses event-driven asynchronous callbacks

Handles concurrency very well than other traditional web server

Difference between node.js and traditional server side scripting

Event-driven asynchronous callbacks

var result = database.query("SELECT * FROM hugetable"); console.log("Hello World");

database.query("SELECT * FROM hugetable", function(rows) { var result = rows; }); console.log("Hello World");

Traditional way

Vs

Asynchronous way

Concurrency

Performancevar i, a, b, c, max; max = 1000000000; var d = Date.now(); for (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);

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

Time comparison in milliseconds

What you can build?

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

What you can build with node.js?

Node.js Features

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.

Node.js features

Blocking vs Non-clocking code

var contents = fs.readFileSync('/etc/hosts');console.log(contents); //Stop process until complete console.log('Doing something else');

fs.readFile('/etc/hosts', function(err, contents) {console.log(contents);

});console.log('Doing something else');

Blocking code

Non-Blocking code

Asynchronous programming

var result = database.query("SELECT * FROM hugetable"); console.log("Hello World");

database.query("SELECT * FROM hugetable", function(rows) { var result = rows; }); console.log("Hello World");

Traditional way

Asynchronous way

Hello World

Example.js

var http = require('http');http.createServer(function (req, res) {

res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');

}).listen(1337, '127.0.0.1');console.log('Server running at http://127.0.0.1:1337/');

% node example.jsServer running at http://127.0.0.1:1337/

If run at command prompt:

At browser: http://127.0.0.1:1337/

Hello World

NPM

npm, short for Node Package Manager, is two things: first and foremost, it is an online repository for the publishing of open-source 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. 

NPM - node package management

Some of the most popular NPM modules today are: Express - Express.js, a Sinatra-inspired web

development framework for Node.js, and the de-facto 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.

node.js frameworks

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.

node.js frameworks

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.

node.js frameworks

Example of using package(module)// 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);

Who are using node.js

And many .....

References

http://nodejs.org/ http://en.wikipedia.org/wiki/Nodejs http://node.codeschool.com/ http://stackoverflow.com/questions/

2353818/how-do-i-get-started-with-node-js http://code.tutsplus.com/tutorials/nodejs-

for-beginners--net-26314

References

Thank You