This Edureka "What is Node.js" tutorial will help you to learn the Node.js fundamentals and how to create an application in Node.js. Node.js is an open-source, cross-platform JavaScript runtime environment for developing a diverse variety of server tools and applications. Below are the topics covered in this tutorial:
1) Client Server Architecture
2) Limitations of Multi – Threaded Model
3) What is Node.js?
4) Features of Node.js
5) Node.js Installation
6) Blocking Vs. Non – Blocking I/O
7) Creating Node.js Program
8) Node.js Modules
4. EDUREKA NODE.JS CERTIFICATION TRAINING www.edureka.co/mastering-node-js
Client Server Architecture
Client Server Architecture:
Request
Response
DatabasesServer
ApplicationUsers
Interacts
Interacts
Interacts
Interacts
5. EDUREKA NODE.JS CERTIFICATION TRAINING www.edureka.co/mastering-node-js
Multi Thread Model
Each request is handled by a separate thread
DatabasesServerClients Thread
thread A
thread B
thread C
Handle Request
A
Handle Request
B
Handle Request
C
……
Request A
Response A
Request B
Response B
Request C
Response C
6. EDUREKA NODE.JS CERTIFICATION TRAINING www.edureka.co/mastering-node-js
Multi Thread Model
▪ In multi-threaded model, for every request server
creates a separate thread which handles that
request
▪ If a thread acquires a lock in the shared resource
and it is ‘exclusive lock’, it will block other threads.
DatabasesThread Request
C
…
B
A
Handling Request A
Thread B C … are
blocked
7. EDUREKA NODE.JS CERTIFICATION TRAINING www.edureka.co/mastering-node-js
B
Single Threaded Model
▪ Node.js is event driven, handling all requests asynchronously from single thread
▪ Almost no function in Node directly performs I/O, so the process never blocks
C
A
Event
Emitters
Event Queue
Event Loop
(Single - threaded)
File System
Network
Process
Other
Thread Pool
Users
Databases
8. EDUREKA NODE.JS CERTIFICATION TRAINING www.edureka.co/mastering-node-js
Multi-Threaded vs Event Driven
Multi-Threaded Asynchronous Event-driven
Lock application / request with listener-workers threads Only one thread, which repeatedly fetches an event
Using incoming-request model Using queue and then processes it
Multithreaded server might block the request which might involve
multiple events
Manually saves state and then goes on to process the next event
Using context switching No contention and no context switches
Using multithreading environments where listener and workers
threads are used frequently to take an incoming-request lock
Using asynchronous I/O facilities (callbacks, not poll/select or
O_NONBLOCK) environments
10. EDUREKA NODE.JS CERTIFICATION TRAINING www.edureka.co/mastering-node-js
Uber Old Architecture
• Since PHP is a multithreaded language , each user’s request is handled in a separate thread
• Reason was car dispatch operation was executed from multiple threads
• Once one car is dispatched for a user, in between the same car get dispatched to another user
MySQL
Database
Server
UBER
Application
PHP for Server-side
scripting
11. EDUREKA NODE.JS CERTIFICATION TRAINING www.edureka.co/mastering-node-js
Uber New Architecture
Real-time Logic
Dispatch State
(MongoDB)
Dispatch (NodeJS)
Business Logic
Python
Persistent Storage
(MySQL)
❖ Well-suited for distributed systems that
make a lot of network requests
❖ Errors can be addressed on the fly without
requiring a restart
❖ Active open source community
13. EDUREKA NODE.JS CERTIFICATION TRAINING www.edureka.co/mastering-node-js
What is Node.js ?
▪ Node.js is an open source runtime environment for server-side and networking applications and is single threaded.
▪ Uses Google JavaScript V8 Engine to execute code.
▪ It is cross platform environment and can run on OS X, Microsoft Windows, Linux and FreeBSD.
▪ Provides an event driven architecture and non blocking I/O that is optimized and scalable.
15. EDUREKA NODE.JS CERTIFICATION TRAINING www.edureka.co/mastering-node-js
Success Stories
Nexflix used JavaScript and NodeJS to transform
their website into a single page application.
PayPal team developed the application
simultaneously using Java and Javascript. The
JavaScript team build the product both faster
and more efficiently.
Uber has built its massive driver / rider matching
system on Node.js Distributed Web Architecture.
Node enables to build quality applications,
deploy new features, write unit and integration
tests easily.
When LinkedIn went to rebuild their Mobile
application they used Node.js for their Mobile
application server which acts as a REST endpoint
for Mobile devices.
They had two primary requirements: first to
make the application as real time as possible.
Second was to orchestrate a huge number of
eBay-specific services.
19. EDUREKA NODE.JS CERTIFICATION TRAINING www.edureka.co/mastering-node-js
Node.js Features
Asynchronous and Event Driven :
▪ When request is made to server, instead of waiting for the request to complete, server continues to
process other requests
▪ When request processing completes, the response is sent to caller using callback mechanism
Caller Recipient
request
response
callback
20. EDUREKA NODE.JS CERTIFICATION TRAINING www.edureka.co/mastering-node-js
Node.js Features
No Buffering
Node.js applications never buffer any data. These
applications simply output the data in chunks.
Very Fast
Being built on Google Chrome's V8 JavaScript Engine,
Node.js library is very fast in code execution.
Single Threaded but Highly Scalable
Uses a single threaded model with event looping. Event mechanism
helps the server to respond in a non-blocking way and makes the
server highly scalable as opposed to traditional servers.
Fast Performance
23. www.edureka.co/mastering-node-jsEDUREKA NODE.JS CERTIFICATION TRAINING
Node.js First Example
Create a Directory: mkdir node_example1
Create a File: first_example.js2
Go to the node_example directory3
Execute the java script file: node first_example.js4
2
1
3
4
26. www.edureka.co/mastering-node-jsEDUREKA NODE.JS CERTIFICATION TRAINING
Blocking vs Non-Blocking
➢ Blocking is when the execution of additional JavaScript in the Node.js process must wait until a non-JavaScript operation completes.
➢ "I/O" refers primarily to interaction with the system's disk and network supported by libuv.
More methods will be blocked till the
read method is not executed
More method will execute
asynchronously
var fs = require("fs");
// Asynchronous read
fs.readFile(‘test.txt', function (err, data) { });
var fs = require("fs");
// Synchronous read
var data = fs.readFileSync('input.txt');
Blocking I/O Non-Blocking I/O
30. www.edureka.co/mastering-node-jsEDUREKA NODE.JS CERTIFICATION TRAINING
Global Objects
These objects are available in all modules
specifies the name of the directory that currently contains the code.__dirname
specifies the name of the file that currently contains the code.__filename
A timer in Node.js is an internal construct that calls a given function after a certain period of time
setTimeout(callback, delay[, ...args]) setInterval(callback, delay[, ...args]) setImmediate(callback, [,..args])
1 2 3
32. www.edureka.co/mastering-node-jsEDUREKA NODE.JS CERTIFICATION TRAINING
File System
File I/O is provided by simple wrappers around standard POSIX functions
FS Methods
Asynchronous
Forms
Synchronous
Forms
var fs = require("fs");
// Asynchronous read
fs.readFile(‘test.txt', function (err, data) { });
var fs = require("fs");
var fs = require("fs");
// Synchronous read
var data = fs.readFileSync('input.txt');
Callback As Last Arg.
33. www.edureka.co/mastering-node-jsEDUREKA NODE.JS CERTIFICATION TRAINING
Methods in File System Module
fs.open( path, flags[, mode], callback )
fs.openSync( path, flags[, mode] )
fs.close( fd, callback )
Open File Asynchronously
Open File Synchronously
Closing File
read(fd, buffer, offset, length, position, callback)
readFile(file[, options], callback)
readFileSync(file[, options])
Read Content of a File into Buffer
Reads File Asynchronously
Reads File Synchronously
Opening a File
Reading from a file
34. www.edureka.co/mastering-node-jsEDUREKA NODE.JS CERTIFICATION TRAINING
Methods in File System Module
writeFile(file, data[, options], callback)
writeFileSync(file, data[, options])
Open File Asynchronously
Open File Synchronously
Writing in a File
36. www.edureka.co/mastering-node-jsEDUREKA NODE.JS CERTIFICATION TRAINING
var fs = require("fs");
// Asynchronous read
fs.readFile(‘test.txt', function (err, data) { });
Callback
Callback is an asynchronous equivalent for a function and is called at the completion of each task
Callback: will execute after
file read is complete
38. www.edureka.co/mastering-node-jsEDUREKA NODE.JS CERTIFICATION TRAINING
Events
▪ Node.js follows event-driven architecture
▪ Certain objects (emitters) periodically emit events which further invokes the listeners
▪ Node.js provide concurrency by using the concept of events and callbacks
▪ All objects that emit events are instances of the EventEmitter class
Import Events Module
Creating object of EventEmitter
Emitting event
Registering Listener and
defining event handler
40. www.edureka.co/mastering-node-jsEDUREKA NODE.JS CERTIFICATION TRAINING
HTTP
Import Required Modules
Creating Server
Parse the fetched URL to get pathname
Request file to be read from file system (index.html)
Creating Header with content type as text or HTML
Generating Response
Listening to port: 3000
▪ To use the HTTP server and client one must require('http')
▪ The HTTP interfaces in Node.js are designed to support many features of the protocol