Introduction to Node.js
This is a Node.js Tutorial from w3resource. You will learn About What Node.js is, History, Features,How to install Node in Windows and in Linux, Followed by a comprehensive discussion of each of the modules of Node.js API. By the end of this Tutorial, you will be able to develop and deploy Node.js Applications by yourself.
What is Node.js
Node.js is a framework to develop highly-scalable applications which can handle tens of thousands of simultaneous client connections efficiently.
build scalable network programs easily.
So, it can be used to develop web
applications accountable to high traffic.
The project received huge appreciation immediately after the
demonstration and did not look back since then. It achieved
exponential growth as well as adoption within a short span of time.
Event Driven / Asynchronous over Thread based
Unlike traditional server programs (like PHP, Java), each client
connection creates a OS thread (smallest unit of processing scheduled
by an operating system) which takes approximately 2Mb of
memory with it. So, if you are using a system with say 4GB of RAM,
maximum number of possible concurrent connections are 2000 (i.e.
4000/2). To support more simultaneous connections, you need to
increase the amount of RAM or number of systems. Which increases cost.
Technically also it becomes tedious, since if you are using multiple
systems to run an application, shared resources must be shared across
all of the systems.
Node instead, uses event driven programming. Each connection uses a
short memory storage when the connection is requested. Node uses
callbacks (reference to an executable code or a piece of executable
code) to inform the OS that a new connection is being requested. Rest
of the time it does not disturb the OS. So, usage of memory is much
more efficient than thread based model.
No locks over Deadlocks
When two or more processes (an instance of a computer program that
is being executed) share the same resource, one has to be locked to
allocate resource (like memory) to another. This can either lead to a
situation where each waiting for another to free resource (i.e.
deadlock) or you need to do write highly efficient code to manage this.
Node is free from this. It does not perform (almost) any input output
operations directly. So, there are no locks. This makes writing codes
for Node easier.
Event loop as a language construct than a library
Design of Node is influenced by Twisted of Python and Event Machine
of Ruby. But unlike these, Node does not use Event Loop (is a software
pattern that facilitates non-blocking I/O) as a library. It is
very much part of the language itself.
And there is no call to start and end the event loop
Real world usage of Node.js
Though pretty young, Node.js is already being used by a lot of
Organizations, Projects and Applications. The following list is an
indication of, for
what kind of applications Node is being used :
- HTTP Proxy
- IRC Bot / Chat / Messaging
- Web service (data)
- real time analysis (data, email)
- Client of another web service (Like Twitter client)
- real time collaboration
- Log and log monitoring
- Web based software to serve a specific client requirement (like )
- Application server
Advantages of using Node.js
- Event driven and Non-Blocking, so handles concurrent connections
efficiently than it's counterparts.
- It's great to have common language on both client and server.
- Event better, if used with Databases like MongoDb, then it's 100%
- Clean, Functional API.
Disadvantages of using Node.js
Since Node is very young, lots of database drivers (required to connect to databases) and modules (for adding some specific functionality), are unstable. It is still unstable on Windows platform. But Node has a very active and responsive community and hope that these problems will be marginalized in near future.
Please Google+, Like this tutorial on FaceBook, Tweet, save it as bookmark and subscribe with our Feed. Have suggestions? comment using Disqus down this page. Thanks.