Upload
bhushan-patil
View
890
Download
0
Tags:
Embed Size (px)
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