際際滷

際際滷Share a Scribd company logo
Node.JS Deep Dive
       Training Deck By

       Prasoon Kumar
       Senior Technical Architect
       Just Dial




          Presentation Material




1                     18th August,2012
What is node?
   Server-side JavaScript framework
   Written using Google V8 engine
   Uses CommonJS module system
   Has the       ECMASCript5 features
   Non-blocking from ground up
   Servers are normally thread based but Node.JS is
    Event based. Node. JS serves each request in an
    Evented loop that can able to handle
    simultaneous requests.
Who is using it?
   Sponsored by
   Google
   Microsoft (native support in Azure)
   Yahoo
   eBay
   Facebook
   LinkedIn
   Many, many smaller companies
Threads VS Event-driven
            Threads                Asynchronous Event-driven

Lock application / request with   only one thread, which
listener-workers threads          repeatedly fetches an event
Using incoming-request model      Using queue and then processes
                                  it
multithreaded server might block manually saves state and then
the request which might involve  goes on to process the next
multiple events                  event
Using context switching           no contention and no context
                                  switches
Using multithreading              Using asynchronous I/O facilities
environments where listener and   (callbacks, not poll/select or
workers threads are used          O_NONBLOCK) environments
frequently to take an incoming-
request lock
Node is
Node layers
             Node standard library
JavaScript



             Node bindings

C
             V8                      Thread   Event pool
                                     Pool
                                              libev
                                     libeio
What? Event looping
Non-blocking IO
 The philosophy behind node is that system interactions should be non
  blocking.
                      Instead of this
   var fs = require('fs'); // Import the 'fs' module
   var data = fs.readFileSync(__dirname + '/example.file','utf8');
   console.log(data); // print it!

                           Use this
    var fs = require('fs'); // Import the 'fs' module
    // Read the file asynchronously
    fs.readFile(__dirname + '/example.file', 'utf8', function (err, data) {
    if (err) {
        return console.log(err);
    }
     console.log(data); // print it! });
Installation

./configure --prefix=/opt/node
make
sudo make install


[prasoonk@prasoonk node-v0.8.6]$ node version
v0.8.6
[prasoonk@prasoonk node-v0.8.6]$ node
 2+3
 5 process.versions
 { http_parser: '1.0', node: '0.8.6', v8: '3.11.10.17', ares: '1.7.5-DEV', uv:
   '0.8',
 zlib: '1.2.3', openssl: '1.0.0f' }
What are packages?

 Ruby has Gems
 Python has PyPI
 PHP has PEAR (terrible)
           Node.js has Packages
Node Package Manager (NPM)
 http://npmjs.org/
npm commands


 ls [filter]  installed, stable, @1.0
 Install package_name@version branch
 rm
NPM  Node Package
     Manager
API Tour
 Platform
    process
    file system
    Networking
       net, dgram, http, tls (ssl)
 Utility
    console
    util
 Buffer
 Event Emitter
 Timer
Process
 Process  PID, platform, memory usage
 Child_process 
   spawn and kill processes,
   Execute commands and
   Pipe their outputs
API Tour: File System
 fs
 path
Hello World
server.js File:
var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-
   Type':'text/plain'});
   res.end('Hello, world! ');
}).listen(80);
Realtime apps
          Real easy




DERBY
All app code client and server
Real-time synced
 Responsive
 Offline
 No glue code
 SEO friendly
 C:srchello> npm install derby




                DEMO
Visit Me @

http://twitter.com/prasoonk

http://prasoonk.wordpress.com

http://slideshare.net/prasoonk


           Thanks!
Quick References
 https://github.com/joyent/node/wiki Github
  Node Wiki
 http://nodemanual.org - API docs, tutorials and
  live code samples
 http://c9.io Cloud9 IDE (use github id)
 http://docs.nodejitsu.com
 http://howtonode.org/ Tutorials
 https://npmjs.org/ NPM registry
 https://github.com/WindowsAzure/azure-sdk-
  for-node

More Related Content

Node.js introduction

  • 1. Node.JS Deep Dive Training Deck By Prasoon Kumar Senior Technical Architect Just Dial Presentation Material 1 18th August,2012
  • 2. What is node? Server-side JavaScript framework Written using Google V8 engine Uses CommonJS module system Has the ECMASCript5 features Non-blocking from ground up Servers are normally thread based but Node.JS is Event based. Node. JS serves each request in an Evented loop that can able to handle simultaneous requests.
  • 3. Who is using it? Sponsored by Google Microsoft (native support in Azure) Yahoo eBay Facebook LinkedIn Many, many smaller companies
  • 4. Threads VS Event-driven Threads Asynchronous Event-driven Lock application / request with only one thread, which listener-workers threads repeatedly fetches an event Using incoming-request model Using queue and then processes it multithreaded server might block manually saves state and then the request which might involve goes on to process the next multiple events event Using context switching no contention and no context switches Using multithreading Using asynchronous I/O facilities environments where listener and (callbacks, not poll/select or workers threads are used O_NONBLOCK) environments frequently to take an incoming- request lock
  • 6. Node layers Node standard library JavaScript Node bindings C V8 Thread Event pool Pool libev libeio
  • 8. Non-blocking IO The philosophy behind node is that system interactions should be non blocking. Instead of this var fs = require('fs'); // Import the 'fs' module var data = fs.readFileSync(__dirname + '/example.file','utf8'); console.log(data); // print it! Use this var fs = require('fs'); // Import the 'fs' module // Read the file asynchronously fs.readFile(__dirname + '/example.file', 'utf8', function (err, data) { if (err) { return console.log(err); } console.log(data); // print it! });
  • 9. Installation ./configure --prefix=/opt/node make sudo make install [prasoonk@prasoonk node-v0.8.6]$ node version v0.8.6 [prasoonk@prasoonk node-v0.8.6]$ node 2+3 5 process.versions { http_parser: '1.0', node: '0.8.6', v8: '3.11.10.17', ares: '1.7.5-DEV', uv: '0.8', zlib: '1.2.3', openssl: '1.0.0f' }
  • 10. What are packages? Ruby has Gems Python has PyPI PHP has PEAR (terrible) Node.js has Packages
  • 11. Node Package Manager (NPM) http://npmjs.org/
  • 12. npm commands ls [filter] installed, stable, @1.0 Install package_name@version branch rm
  • 13. NPM Node Package Manager
  • 14. API Tour Platform process file system Networking net, dgram, http, tls (ssl) Utility console util Buffer Event Emitter Timer
  • 15. Process Process PID, platform, memory usage Child_process spawn and kill processes, Execute commands and Pipe their outputs
  • 16. API Tour: File System fs path
  • 17. Hello World server.js File: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content- Type':'text/plain'}); res.end('Hello, world! '); }).listen(80);
  • 18. Realtime apps Real easy DERBY
  • 19. All app code client and server Real-time synced Responsive Offline No glue code SEO friendly
  • 20. C:srchello> npm install derby DEMO
  • 22. Quick References https://github.com/joyent/node/wiki Github Node Wiki http://nodemanual.org - API docs, tutorials and live code samples http://c9.io Cloud9 IDE (use github id) http://docs.nodejitsu.com http://howtonode.org/ Tutorials https://npmjs.org/ NPM registry https://github.com/WindowsAzure/azure-sdk- for-node