SlideShare a Scribd company logo
Introduction to Node.js
                         Please rate this talk: http://spkr8.com/t/19141




Monday, January 14, 13
Our Goals
                    •    What Node Isn't and Is   •   A Website

                    •    How to Install           •   A RESTful Web Service

                    •    Hello World - Node       •   Why Node
                         Style
                                                  •   Resources
                    •    Node Workflow
                                                  •   Summary
                    •    Three Key Ideas

                    •    Introducing NPM


Monday, January 14, 13
Disclaimer
  The opinions expressed in this talk are my own and don’t
  represent those of my employer, my friends, my family, or
  even me.




Monday, January 14, 13
Who am I?
  I am a Microsoft Certified Solution Developer and I’ve
  been developing software since 1979. Since 2009, I have
  been focused on developing mobile applications, for 
  iPhone, Android, the mobile web, and Windows Phone 7.




Monday, January 14, 13
Who Are You? (I hope)
                    • Experienced with JavaScript
                    • Experience with some other server
                         framework
                    • Familiar with the Unix Tool Chain
                    • Familiar with Git


Monday, January 14, 13
What Node
                             Isn't and Is?
                    • What Node Isn't?
                    • What Node Is?
                    • How to Spell It?




Monday, January 14, 13
What Node Isn't?




Monday, January 14, 13
What Node Is?
                    • The Official Answer
                    • It is built on Google's V8
                    • The Server and the App Are One




Monday, January 14, 13
The Official Answer
                    • 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.




Monday, January 14, 13
It is built on Google's
                                     V8
                    • Google’s Open Source JavaScript Engine
                    • V8 is really fast
                    • It is compiled, sort of




Monday, January 14, 13
The Server and The
                           App Are One
                    • Unlike Other Technologies
                     • IIS and ASP.NET ( aspnet_wp.exe)
                     • Apache HTTP and PHP
                    • Complete Control of the HTTP Request



Monday, January 14, 13
How to Spell It?
                    • Node.js
                    • Node.JS
                    • Node (my preferred spelling)




Monday, January 14, 13
How to Install
                    • http://nodejs.org/downloads
                     • Mac/PC/Linux/SunOS
                    • Azure
                     • http://www.windowsazure.com/en-us/
                         develop/nodejs/




Monday, January 14, 13
Hello World Node
                               Style
                var http=require('http');
                http.createServer(function (req, res) {
                     res.writeHead(200, { 'Content-Type': 'text/plain});
                     res.end('Hello Worldn');
                }).listen(3000);
                console.log('Server running at http://localhost:3000/');




Monday, January 14, 13
A Slightly Better Hello
                             World
                var http=require('http');

                var server = http.createServer();

                server.on(function (req, res) {

                     res.writeHead(200, { 'Content-Type': 'text/plain});

                     res.end('Hello Worldn');

                }).listen(3000);

                console.log('Server running at http://localhost:3000/');




Monday, January 14, 13
Node Workflow
                    • The REPL
                    • Developing
                    • Publishing




Monday, January 14, 13
The REPL
                    • Read - Eval - Print Loop
                    • Brings JavaScript to the command line
                    • Allows all JavaScript commands
                    • Isn’t Really too useful



Monday, January 14, 13
Developing
                    • Text Editor / Terminal
                    • VIM
                    • WebStorm




Monday, January 14, 13
Publishing with Git
                    • Git
                    • Microsoft Azure
                    • Heroku




Monday, January 14, 13
Three Key Ideas
                    • Callbacks
                    • Events
                    • Modules




Monday, January 14, 13
Callbacks
                    • Callbacks are the key to Asynchronous
                         Programming
                    • Avoid thinking in Java or C# with callbacks
                query(“SELECT * from db”, function(result) {

                     /* do something with result */

                });




Monday, January 14, 13
Events
                    • Events are Core to Node’s Architecture
                    • Events are defined in the Module, Events
                    • Events are hooked using .on
                    • Events are triggered using .emit
                    • Your code can define and emit events also


Monday, January 14, 13
Modules
                    • Based on CommonJS
                    • Solves the Issue of the JavaScript Global
                         Object
                    • Modules are wrapped in anonymous
                         functions




Monday, January 14, 13
Modules
                (function() {
                         /* contents of module file */
                })();




Monday, January 14, 13
Introducing NPM
                    • Node Package Manager
                    • http://npmjs.org
                    • Core
                    • Userland
                    • Types of Installs
                    • Don’t Re-invent the Wheel

Monday, January 14, 13
Core
                    • Packages that are internal to Node
                    • Defined in Node's source in the lib/ folder
                    • Modules like: http, util, fs, etc.




Monday, January 14, 13
Userland
                    • Modules loaded from NPM or other
                    • npm install <module name>
                    • npm install -g <module name>




Monday, January 14, 13
Types of Installs
                    • Global - Accessible to all Node Apps
                    • Local - Accessible only to the current App
                    • Prefer Local
                     • App has all components when published
                     • No need to sudo


Monday, January 14, 13
Don’t Re-invent the
                               Wheel
                    • There are over 20k Packages already
                         defined
                    • Most of your problems have already been
                         solved




Monday, January 14, 13
Top Ten Packages
                    • #10 connect
                         Connect is an extensible HTTP server
                         framework for node, providing high
                         performance "plugins" known as
                         middleware. Connect is bundled with over
                         20 commonly used middleware, including a
                         logger, session support, cookie parser, and
                         more.



Monday, January 14, 13
Top Ten Packages
                    • #9 coffee-script
                         CoffeeScript is a little language that
                         compiles into JavaScript.




Monday, January 14, 13
Top Ten Packages
                    • #8 underscore
                         Underscore.js is a utility-belt library for
                         JavaScript that provides support for the
                         usual functional suspects (each, map,
                         reduce, filter...) without extending any core
                         JavaScript objects.




Monday, January 14, 13
Top Ten Packages
                    • #7 jade
                         Jade is a high performance template engine
                         heavily influenced by Haml and
                         implemented with JavaScript for node.




Monday, January 14, 13
Top Ten Packages
                    • #6 redis
                         This is a complete Redis client for node.js.
                         It supports all Redis commands, including
                         many recently added commands like EVAL
                         from experimental Redis server branches.




Monday, January 14, 13
Top Ten Packages
                    • #5 mocha
                         Mocha is a simple, flexible, fun JavaScript
                         test framework for node.js and the
                         browser.




Monday, January 14, 13
Top Ten Packages
                    • #4 socket.io
                         Socket.IO is a Node.JS project that makes
                         WebSockets and realtime possible in all
                         browsers. It also enhances WebSockets by
                         providing built-in multiplexing, horizontal
                         scalability, automatic JSON encoding/
                         decoding, and more.




Monday, January 14, 13
Top Ten Packages
                    • #3 async
                         Async is a utility module which provides
                         straight-forward, powerful functions for
                         working with asynchronous JavaScript.
                         Although originally designed for use with
                         node.js, it can also be used directly in the
                         browser.




Monday, January 14, 13
Top Ten Packages
                    • #2 request
                         Simplified HTTP request client.




Monday, January 14, 13
Top Ten Packages
                    • #1 Express
                         Fast, unopinionated, minimalist web
                         framework for node.




Monday, January 14, 13
A Website




Monday, January 14, 13
A RESTful Web Service




Monday, January 14, 13
Why Node?
                    • Avoids the Web Dev Context Switch
                    • Gives You Full Control of the Server
                    • Makes Asynchronous Coding Easy
                    • Node is Fun



Monday, January 14, 13
Resources
                    • http://nodejs.org
                    • http://npmjs.org
                    • http://nodetuts.com
                    • http://howtonode.org
                    • http://package.json.nodejitsu.com


Monday, January 14, 13
Summary
                    •    What Node Isn't and Is   •   A Website Using
                                                      Packages
                    •    How to Install
                                                  •   A RESTful Web Service
                    •    Hello World - Node
                         Style                    •   Why Node

                    •    Node Workflow             •   Resources

                    •    Three Key Ideas          •   Summary

                    •    Introducing NPM


Monday, January 14, 13

More Related Content

PDF
MySQL Sandbox - A toolkit for laziness
PDF
AngularJS: Q&A - AngularJS Warsaw #3
PDF
Ruby on Windows (RubyConf.tw 2011)
PDF
Aloha on-rails-2009
PDF
Your java script library
PDF
NodeJS, CoffeeScript & Real-time Web
PDF
Mars - ESUG 2010
PDF
PhoneGap in a Day
MySQL Sandbox - A toolkit for laziness
AngularJS: Q&A - AngularJS Warsaw #3
Ruby on Windows (RubyConf.tw 2011)
Aloha on-rails-2009
Your java script library
NodeJS, CoffeeScript & Real-time Web
Mars - ESUG 2010
PhoneGap in a Day

Similar to Introduction to Node.js (20)

PDF
Introduction to node.js by Ran Mizrahi @ Reversim Summit
PDF
Android meetup
PPTX
Node.js Getting Started &amd Best Practices
PDF
Empowering the Social Web with Apache Shindig
PDF
Node.js Patterns and Opinions
PDF
node.js in action
PPTX
An overview of node.js
PDF
PDF
Introduction to Express and Grunt
PDF
Red Dirt Ruby Conference
PDF
Node js (runtime environment + js library) platform
PDF
At Your Service: Using Jenkins in Operations
PPT
QEWD.js: Have your Node.js Cake and Eat It Too
PDF
Show an Open Source Project Some Love and Start Using Travis-CI
PDF
How fast can you onboard a new team member with VAGRANT ?
PDF
JavaScript Dependencies, Modules & Browserify
PDF
Developing locally with virtual machines
PDF
App Engine Meetup
PPTX
Nodejs web service for starters
PDF
Frontend Engineer Toolbox
Introduction to node.js by Ran Mizrahi @ Reversim Summit
Android meetup
Node.js Getting Started &amd Best Practices
Empowering the Social Web with Apache Shindig
Node.js Patterns and Opinions
node.js in action
An overview of node.js
Introduction to Express and Grunt
Red Dirt Ruby Conference
Node js (runtime environment + js library) platform
At Your Service: Using Jenkins in Operations
QEWD.js: Have your Node.js Cake and Eat It Too
Show an Open Source Project Some Love and Start Using Travis-CI
How fast can you onboard a new team member with VAGRANT ?
JavaScript Dependencies, Modules & Browserify
Developing locally with virtual machines
App Engine Meetup
Nodejs web service for starters
Frontend Engineer Toolbox
Ad

More from Troy Miles (20)

PDF
Fast C++ Web Servers
PDF
Node Boot Camp
PDF
AWS Lambda Function with Kotlin
PDF
React Native One Day
PDF
React Native Evening
PDF
Intro to React
PDF
React Development with the MERN Stack
PDF
Angular Application Testing
PDF
ReactJS.NET
PDF
What is Angular version 4?
PDF
Angular Weekend
PDF
From MEAN to the MERN Stack
PDF
Functional Programming in JavaScript
PDF
Functional Programming in Clojure
PDF
MEAN Stack Warm-up
PDF
The JavaScript You Wished You Knew
PDF
Game Design and Development Workshop Day 1
PDF
Build a Game in 60 minutes
PDF
Quick & Dirty & MEAN
PDF
A Quick Intro to ReactiveX
Fast C++ Web Servers
Node Boot Camp
AWS Lambda Function with Kotlin
React Native One Day
React Native Evening
Intro to React
React Development with the MERN Stack
Angular Application Testing
ReactJS.NET
What is Angular version 4?
Angular Weekend
From MEAN to the MERN Stack
Functional Programming in JavaScript
Functional Programming in Clojure
MEAN Stack Warm-up
The JavaScript You Wished You Knew
Game Design and Development Workshop Day 1
Build a Game in 60 minutes
Quick & Dirty & MEAN
A Quick Intro to ReactiveX
Ad

Recently uploaded (20)

PDF
Empathic Computing: Creating Shared Understanding
PDF
Electronic commerce courselecture one. Pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Cloud computing and distributed systems.
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Spectroscopy.pptx food analysis technology
PDF
Encapsulation theory and applications.pdf
PDF
Approach and Philosophy of On baking technology
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Spectral efficient network and resource selection model in 5G networks
Empathic Computing: Creating Shared Understanding
Electronic commerce courselecture one. Pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Big Data Technologies - Introduction.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
Programs and apps: productivity, graphics, security and other tools
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Encapsulation_ Review paper, used for researhc scholars
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Cloud computing and distributed systems.
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Spectroscopy.pptx food analysis technology
Encapsulation theory and applications.pdf
Approach and Philosophy of On baking technology
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Spectral efficient network and resource selection model in 5G networks

Introduction to Node.js

  • 1. Introduction to Node.js Please rate this talk: http://spkr8.com/t/19141 Monday, January 14, 13
  • 2. Our Goals • What Node Isn't and Is • A Website • How to Install • A RESTful Web Service • Hello World - Node • Why Node Style • Resources • Node Workflow • Summary • Three Key Ideas • Introducing NPM Monday, January 14, 13
  • 3. Disclaimer The opinions expressed in this talk are my own and don’t represent those of my employer, my friends, my family, or even me. Monday, January 14, 13
  • 4. Who am I? I am a Microsoft Certified Solution Developer and I’ve been developing software since 1979. Since 2009, I have been focused on developing mobile applications, for  iPhone, Android, the mobile web, and Windows Phone 7. Monday, January 14, 13
  • 5. Who Are You? (I hope) • Experienced with JavaScript • Experience with some other server framework • Familiar with the Unix Tool Chain • Familiar with Git Monday, January 14, 13
  • 6. What Node Isn't and Is? • What Node Isn't? • What Node Is? • How to Spell It? Monday, January 14, 13
  • 7. What Node Isn't? Monday, January 14, 13
  • 8. What Node Is? • The Official Answer • It is built on Google's V8 • The Server and the App Are One Monday, January 14, 13
  • 9. The Official Answer • 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. Monday, January 14, 13
  • 10. It is built on Google's V8 • Google’s Open Source JavaScript Engine • V8 is really fast • It is compiled, sort of Monday, January 14, 13
  • 11. The Server and The App Are One • Unlike Other Technologies • IIS and ASP.NET ( aspnet_wp.exe) • Apache HTTP and PHP • Complete Control of the HTTP Request Monday, January 14, 13
  • 12. How to Spell It? • Node.js • Node.JS • Node (my preferred spelling) Monday, January 14, 13
  • 13. How to Install • http://nodejs.org/downloads • Mac/PC/Linux/SunOS • Azure • http://www.windowsazure.com/en-us/ develop/nodejs/ Monday, January 14, 13
  • 14. Hello World Node Style var http=require('http'); http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain}); res.end('Hello Worldn'); }).listen(3000); console.log('Server running at http://localhost:3000/'); Monday, January 14, 13
  • 15. A Slightly Better Hello World var http=require('http'); var server = http.createServer(); server.on(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain}); res.end('Hello Worldn'); }).listen(3000); console.log('Server running at http://localhost:3000/'); Monday, January 14, 13
  • 16. Node Workflow • The REPL • Developing • Publishing Monday, January 14, 13
  • 17. The REPL • Read - Eval - Print Loop • Brings JavaScript to the command line • Allows all JavaScript commands • Isn’t Really too useful Monday, January 14, 13
  • 18. Developing • Text Editor / Terminal • VIM • WebStorm Monday, January 14, 13
  • 19. Publishing with Git • Git • Microsoft Azure • Heroku Monday, January 14, 13
  • 20. Three Key Ideas • Callbacks • Events • Modules Monday, January 14, 13
  • 21. Callbacks • Callbacks are the key to Asynchronous Programming • Avoid thinking in Java or C# with callbacks query(“SELECT * from db”, function(result) { /* do something with result */ }); Monday, January 14, 13
  • 22. Events • Events are Core to Node’s Architecture • Events are defined in the Module, Events • Events are hooked using .on • Events are triggered using .emit • Your code can define and emit events also Monday, January 14, 13
  • 23. Modules • Based on CommonJS • Solves the Issue of the JavaScript Global Object • Modules are wrapped in anonymous functions Monday, January 14, 13
  • 24. Modules (function() { /* contents of module file */ })(); Monday, January 14, 13
  • 25. Introducing NPM • Node Package Manager • http://npmjs.org • Core • Userland • Types of Installs • Don’t Re-invent the Wheel Monday, January 14, 13
  • 26. Core • Packages that are internal to Node • Defined in Node's source in the lib/ folder • Modules like: http, util, fs, etc. Monday, January 14, 13
  • 27. Userland • Modules loaded from NPM or other • npm install <module name> • npm install -g <module name> Monday, January 14, 13
  • 28. Types of Installs • Global - Accessible to all Node Apps • Local - Accessible only to the current App • Prefer Local • App has all components when published • No need to sudo Monday, January 14, 13
  • 29. Don’t Re-invent the Wheel • There are over 20k Packages already defined • Most of your problems have already been solved Monday, January 14, 13
  • 30. Top Ten Packages • #10 connect Connect is an extensible HTTP server framework for node, providing high performance "plugins" known as middleware. Connect is bundled with over 20 commonly used middleware, including a logger, session support, cookie parser, and more. Monday, January 14, 13
  • 31. Top Ten Packages • #9 coffee-script CoffeeScript is a little language that compiles into JavaScript. Monday, January 14, 13
  • 32. Top Ten Packages • #8 underscore Underscore.js is a utility-belt library for JavaScript that provides support for the usual functional suspects (each, map, reduce, filter...) without extending any core JavaScript objects. Monday, January 14, 13
  • 33. Top Ten Packages • #7 jade Jade is a high performance template engine heavily influenced by Haml and implemented with JavaScript for node. Monday, January 14, 13
  • 34. Top Ten Packages • #6 redis This is a complete Redis client for node.js. It supports all Redis commands, including many recently added commands like EVAL from experimental Redis server branches. Monday, January 14, 13
  • 35. Top Ten Packages • #5 mocha Mocha is a simple, flexible, fun JavaScript test framework for node.js and the browser. Monday, January 14, 13
  • 36. Top Ten Packages • #4 socket.io Socket.IO is a Node.JS project that makes WebSockets and realtime possible in all browsers. It also enhances WebSockets by providing built-in multiplexing, horizontal scalability, automatic JSON encoding/ decoding, and more. Monday, January 14, 13
  • 37. Top Ten Packages • #3 async Async is a utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript. Although originally designed for use with node.js, it can also be used directly in the browser. Monday, January 14, 13
  • 38. Top Ten Packages • #2 request Simplified HTTP request client. Monday, January 14, 13
  • 39. Top Ten Packages • #1 Express Fast, unopinionated, minimalist web framework for node. Monday, January 14, 13
  • 41. A RESTful Web Service Monday, January 14, 13
  • 42. Why Node? • Avoids the Web Dev Context Switch • Gives You Full Control of the Server • Makes Asynchronous Coding Easy • Node is Fun Monday, January 14, 13
  • 43. Resources • http://nodejs.org • http://npmjs.org • http://nodetuts.com • http://howtonode.org • http://package.json.nodejitsu.com Monday, January 14, 13
  • 44. Summary • What Node Isn't and Is • A Website Using Packages • How to Install • A RESTful Web Service • Hello World - Node Style • Why Node • Node Workflow • Resources • Three Key Ideas • Summary • Introducing NPM Monday, January 14, 13