Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. It allows JavaScript to be used for server-side scripting, enabling developers to write scalable network applications using JavaScript. Some key features of Node.js include non-blocking I/O calls, asynchronous programming, and an event loop that handles concurrency. Popular uses of Node.js include real-time web applications with websockets, fast file uploads, and any application requiring real-time data processing.
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
7.
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");
10.
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!
12.
13.
Websocket Server - like chat application
Fast File Upload Client
Ad Server
Any Real-Time Data Apps
14.
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");
18.
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
20.
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);