Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Intro to Node.JS
By Aaron Stannard
Startup Developer Evangelist, Microsoft Corporation
Examples from Today’s Talk
https://github.com/Aaronontheweb/introtonode
Meet Node
var http = require('http');
//Node function called each time a new HTTP request arrives
function onRequest(req, ...
What Is Node?
• Server Side JavaScript
• Asynchronous Web Framework
• Evented I/O Model
What Is Node?
Network I/O Libraries
+
+
=
What Makes Node Special?
• Uses the familiar JavaScript programming
model to enable server-side development
• Buries the p...
Why Node
JavaScript is ubiquitous
Why Node
Traditional Platforms
• Things you need for
concurrent web
programming:
– Locks
– Threads / Thread Pools
– Thread...
Good Node Scenarios
Behavior
• High request volume, low
response-sizes
• Pub / Sub
• Real-time applications
Application
• ...
Bad Node Scenarios
Behavior
• Large HTTP response sizes
• CRUD
• Transaction-heavy systems
Application
• Static file serve...
Node Concepts
• What Do Node Projects Look Like?
• Event Loop & Workers
• HTTP as a First Class Citizen
• Callbacks and Fu...
Structure of a Node Project
/projectroot/
package.json
readme.txt
web/
server.js
views/
index.html
models/
post.js
helpers...
Event Loop + Workers
HTTP
• HTTP is a first class citizen
• Request Object
– Holds properties about the client
– Holds session state
– Passes c...
Callbacks and Functions as Objects
// HTTP GET /app/list
exports.listapps = function(req, res){
var pageTitle = req.sessio...
Modules & Packages
• Including a built-in module
var http = require('http');
• Including your own module
[timestamp.js] ex...
Microsoft & Node
Microsoft wants Windows Azure to be an option
for developers regardless of stack
=>
Node on Windows Azure
• IISNode
• Windows Azure Node PowerShell Cmdlets
• Windows Azure Node SDK
• Cloud9 IDE
IISNode
• Hosts Node applications in IIS as native
modules
• Automatically manages life-cycle of node.exe
• Can load-balan...
Azure / Node Powershell Cmdlets
• Create new Azure Services
• Add Node Web and Worker Roles
• Deploy to Azure Emulator
• I...
Windows Azure SDK
• Loads Storage Settings from Web.config
• Azure Tables
• Azure Blobs
• Azure Queues
[console] C:> npm i...
Cloud9 IDE
• Browser-based IDE
• Deploys to Windows Azure
• Only way to deploy without Windows Vista / 7
Popular Node Frameworks and Tools
• Express (MVC)
• Connect
• Socket.IO
• Unit Testing:
– Assert (built-in)
– Nodeunit
Further Reference
• NodeBeginner.org - Used this to teach myself
Node when I was first getting started.
• NodeJS.org - Off...
About Me
• Aaron Stannard
– Twitter: @Aaronontheweb
– Github: @Aaronontheweb
– Blog: http://www.aaronstannard.com/
Upcoming SlideShare
Loading in …5
×

Intro to Node

9,921 views

Published on

Node.JS is a popular server-side JavaScript framework for handling real-time and distributed data processing. In this session you'll learn what Node.JS is, how it works under the hood, and what scenarios it's useful for. You'll also learn how to deploy it to Windows Azure and manage it inside of IIS 7.

Published in: Technology
  • Be the first to comment

Intro to Node

  1. 1. Intro to Node.JS By Aaron Stannard Startup Developer Evangelist, Microsoft Corporation
  2. 2. Examples from Today’s Talk https://github.com/Aaronontheweb/introtonode
  3. 3. Meet Node var http = require('http'); //Node function called each time a new HTTP request arrives function onRequest(req, res){ res.writeHead(200, {'Content-Type':'text/plain'}); res.end('Hello ' + req.connection.remoteAddress + '!'); /* Write the IP addresses of our connecting client to console */ console.log('Incoming connection from ' + req.connection.remoteAddress); } //Listen for connections on the port provided by the host process var server = http.createServer(onRequest).listen(process.env.PORT);
  4. 4. What Is Node? • Server Side JavaScript • Asynchronous Web Framework • Evented I/O Model
  5. 5. What Is Node? Network I/O Libraries + + =
  6. 6. What Makes Node Special? • Uses the familiar JavaScript programming model to enable server-side development • Buries the pain of working with async / parallel programming • No Blocking I/O • Can handle large concurrent loads more easily than other technologies • Not a silver bullet
  7. 7. Why Node JavaScript is ubiquitous
  8. 8. Why Node Traditional Platforms • Things you need for concurrent web programming: – Locks – Threads / Thread Pools – Thread Management – Inter-Thread Communication – Callbacks + Enclosures + Sync to Blocking Calls Node • Things you need for concurrent web programming: – Callbacks + Enclosures Which looks simpler?
  9. 9. Good Node Scenarios Behavior • High request volume, low response-sizes • Pub / Sub • Real-time applications Application • Online games, message passing services • Social networks, content- syndication services • Chat, real-time games
  10. 10. Bad Node Scenarios Behavior • Large HTTP response sizes • CRUD • Transaction-heavy systems Application • Static file servers, reporting tools • Blogs, CMS • E-Commerce
  11. 11. Node Concepts • What Do Node Projects Look Like? • Event Loop & Workers • HTTP as a First Class Citizen • Callbacks and Functions as Objects • Modules & Packages
  12. 12. Structure of a Node Project /projectroot/ package.json readme.txt web/ server.js views/ index.html models/ post.js helpers/ timestamp.js test/ route-test.js post-test.js node_modules/ C:[projectroot]> node web/server.js Node server listenening on port 3000 in development mode Tells Node and NPM what packages are required The main entry point for your application User-defined module for handling persistence User-defined module for other stuff Root of your actual application Directory for unit tests Output directory for all NPM installations
  13. 13. Event Loop + Workers
  14. 14. HTTP • HTTP is a first class citizen • Request Object – Holds properties about the client – Holds session state – Passes client-data to request handlers • Response Object – Holds the HTTP response stream – Can be written in chunks
  15. 15. Callbacks and Functions as Objects // HTTP GET /app/list exports.listapps = function(req, res){ var pageTitle = req.session.userName + "'s Apps"; appProvider.getAppsForUser(req.session.userName, function(error, userApps){ if(error){ console.log(error.message); return res.redirect('/'); } res.render('list_apps', {locals:{title: pageTitle, apps:userApps}}) }); }
  16. 16. Modules & Packages • Including a built-in module var http = require('http'); • Including your own module [timestamp.js] exports.currentTime = function(){…} [server.js] var timestamp = require(‘./helpers/timestamp'); [server.js] console.log(timestamp.currentTime()); • Node Package Manager (NPM) [Commandline] C:> npm install express [server.js] var express = require(‘express’);
  17. 17. Microsoft & Node Microsoft wants Windows Azure to be an option for developers regardless of stack =>
  18. 18. Node on Windows Azure • IISNode • Windows Azure Node PowerShell Cmdlets • Windows Azure Node SDK • Cloud9 IDE
  19. 19. IISNode • Hosts Node applications in IIS as native modules • Automatically manages life-cycle of node.exe • Can load-balance multiple node.exe processes
  20. 20. Azure / Node Powershell Cmdlets • Create new Azure Services • Add Node Web and Worker Roles • Deploy to Azure Emulator • Import Publish Settings • Deploy to Azure (Production / Staging) • Source @ Github
  21. 21. Windows Azure SDK • Loads Storage Settings from Web.config • Azure Tables • Azure Blobs • Azure Queues [console] C:> npm install azure Source @ Github
  22. 22. Cloud9 IDE • Browser-based IDE • Deploys to Windows Azure • Only way to deploy without Windows Vista / 7
  23. 23. Popular Node Frameworks and Tools • Express (MVC) • Connect • Socket.IO • Unit Testing: – Assert (built-in) – Nodeunit
  24. 24. Further Reference • NodeBeginner.org - Used this to teach myself Node when I was first getting started. • NodeJS.org - Official Node Homepage • Github.com/WindowsAzure – Azure bits
  25. 25. About Me • Aaron Stannard – Twitter: @Aaronontheweb – Github: @Aaronontheweb – Blog: http://www.aaronstannard.com/

×