18 Node - Js

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 28

Introduction to Node.

js®
Jitendra Kumar Patel

Saturday, January 31, 2015


Why node.js ?

“Node's goal is to provide an easy


way to build scalable Network
programs”
About Node.js……
• Created by Ryan Dahl in 2009
• Development && maintenance sponsored by Joyent
• Licence MIT
• Last release : 0.10.31
• Based on Google V8 Engine
• +99 000 packages
Success Stories…..
Other projects like Node.js….
● Vert.x => Polygot programming
● Akka => Scala and Java
● Tornado => Python
● Libevent => C
● EventMachine => Ruby
Node.js is not……
● Another Web framework

● For beginner

● Multi-thread
Development for the Web….
• Traditional desktop applications have a user interface wired up with background logic
– user interfaces are based on Windows Forms, Jswing, WPF, Gtk, Qt, etc. and dependant on operating system
• On the web user interfaces are standardized
– HTML for markup
– CSS for style
– JavaScript for dynamic content
• In the past proprietary technologies existed on the web, e.g. Adobe Flash, ActiveX
– They are slowly dying
• Data is generated on the server, transferred to the client and displayed by the browser
• Server Side technologies include PHP, JSP, ASP.net, Rails, Djanog, and yes, also node.js
REST……

● REST = REpresentational State Transfer

● Not new technology

● Architectural style for client-server


Goals of REST……..
● General interface

● Scalability of component interface

● Reduce latency

● Encapsulate legacy system


HTTP Method……
● GET
● POST
● PUT
● DELETE
HTTP Method with CRUD…..
● POST => Create
● GET => Read
● PUT => Update
● DELETE => Delete
Why node.js ?
● Non Blocking I/O
● V8 Javascript Engine
● Single Thread with Event Loop
● 40,025 modules
● Windows, Linux, Mac
● 1 Language for Frontend and Backend
● Active community
What is node.js?
• Asynchronous i/o framework « A platform built on Chrome's
JavaScript runtime for easily
building fast, scalable network
• Core in c++ on top of v8 applications. » http://nodejs.org/
• Rest of it in javascript
• Swiss army knife for network Related stuffs
• Can handle thousands of Concurrent connections with
Minimal overhead (cpu/memory) on a single process
• It’s NOT a web framework, and it’s also NOT a
language
Why javascript ?!!!
• Friendly callbacks
• Ubiquitous
• No I/o Primitives
• One language to RULE them all
JavaScript is well known for client-side scripts running inside the browser
node.js is JavaScript running on the server-side
SSJS -> Server-Side JavaScript
Use a language you know
Use the same language for client side and server side
JavaScript Engines……
The idea behind node.js….
Perform asynchronous processing on single thread instead of classical multithread processing, minimize
overhead & latency, maximize scalability

Scale horizontally instead of vertically

Ideal for applications that serve a lot of requests but dont use/need lots of computational power per
request

Not so ideal for heavy calculations, e.g. massive parallel computing

Also: Less problems with concurrency


Node.js Event Loop

There are a couple of implications of this apparently very simple and basic model
• Avoid synchronous code at all costs because it blocks the event loop
• Which means: callbacks, callbacks, and more callbacks
Blocking vs Non-Blocking……
Example :: Read data from file and show data
Blocking…..
● Read data from file
● Show data
● Do other tasks
var data = fs.readFileSync( “test.txt” );
console.log( data );
console.log( “Do other tasks” );
Non-Blocking…… Callback
● Read data from file
When read data completed, show data

● Do other tasks

fs.readFile( “test.txt”, function( err, data ) {


console.log(data);
});
When to use it ?
• Chat/Messaging
• Real-time Applications
• Intelligent Proxies
• High Concurrency Applications
• Communication Hubs
• Coordinators
Node.js for….
● Web application
● Websocket server
● Ad server
● Proxy server
● Streaming server
● Fast file upload client
● Any Real-time data apps
● Anything with high I/O
Getting Started…..
• http://nodejs.org/ and Download tar.gz
• Extract to any directory
• $ ./configure && make install
File package.json…..
Project informations
• Name
• Version
• Dependencies
• Licence
• Main file
Etc...
Node.js Modules…..
● https://npmjs.org/
● # of modules = 1,21,943
Install module…..

$npm install <module name>


Using module…..
• var http = require(‘http’);
• var fs = require(‘fs’);
• var express = require(‘express’);
In NodeJS

You might also like