$30 off During Our Annual Pro Sale. View Details »

Node.js Introduction

Node.js Introduction

A brief introduction to Node.js given at the Grand Rapids Web Development Group.

Brandon Keepers
PRO

March 26, 2012
Tweet

More Decks by Brandon Keepers

Other Decks in Programming

Transcript

  1. INTRODUCTION

    View Slide

  2. Hi, I’m
    @bkeepers

    View Slide

  3. View Slide

  4. nodejs.org
    Node.js is a platform built on Chrome's
    JavaScript runtime for easily building
    fast, scalable network applications.
    Node.js uses an event-driven, non-
    blocking I/O model that makes it
    lightweight and efficient, perfect for
    data-intensive real-time applications
    that run across distributed devices.

    View Slide

  5. server side
    JavaScript

    View Slide

  6. $ node webserver.js
    var http = require('http'),
    server = http.createServer();
    server.on('request', function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
    });
    server.listen(1337, "127.0.0.1");
    console.log('Server running at http://127.0.0.1:1337/');
    webserver.js

    View Slide

  7. View Slide

  8. event loop
    modules
    package
    management

    View Slide

  9. non-blocking
    evented I/O

    View Slide

  10. event driven

    View Slide

  11. event driven
    Button

    View Slide

  12. event driven
    Button

    View Slide

  13. event driven
    Button
    $('button').on('click', function(event) {
    alert('Event Driven!')
    });

    View Slide

  14. event driven
    server.on('request', function(req, res) {
    res.write(handleRequest(req))
    });

    View Slide

  15. non-blocking

    View Slide

  16. View Slide

  17. // blocking
    var files = fs.readdirSync('/tmp')
    for(var i = 0; i < files.length; i++) {
    var file = files[i];
    fs.unlinkSync('/tmp/' + file);
    console.log('successfully deleted ' + file);
    }

    View Slide

  18. // blocking
    var files = fs.readdirSync('/tmp')
    for(var i = 0; i < files.length; i++) {
    var file = files[i];
    fs.unlinkSync('/tmp/' + file);
    console.log('successfully deleted ' + file);
    }
    // non-blocking
    fs.readdir('/tmp', function(err, files) {
    for(var i = 0; i < files.length; i++) {
    var file = files[i];
    fs.unlink('/tmp/' + file, function (err) {
    if (err) throw err;
    console.log('successfully deleted ' + file);
    });
    }
    });

    View Slide

  19. CommonJS
    modules

    View Slide

  20. JavaScript
    Pollutes

    View Slide

  21. JavaScript
    Pollutes
    string = "pollution";

    View Slide

  22. View Slide

  23. var http = require('http');

    View Slide

  24. hello.js
    module.exports = function() {
    return 'Hello World'
    };

    View Slide

  25. $ node myapp.js
    myapp.js
    var hello = require('./hello.js');
    console.log(hello());

    View Slide

  26. package
    management

    View Slide

  27. npmjs.org

    View Slide

  28. $ npm install

    View Slide

  29. package.json

    View Slide

  30. package.json
    $ npm install
    {
    "name": "myapp",
    "version": "0.0.1",
    "dependencies": {
    "socket.io": "0.8.7",
    "coffee-script": "1.2.0",
    "spine": "~1.0.5"
    }
    }

    View Slide

  31. building the simplest
    chat app in the world
    demo

    View Slide

  32. references

    View Slide

  33. http://nodejs.org/api/

    View Slide

  34. View Slide

  35. thanks!
    @bkeepers

    View Slide