Introduction to Node.js

893 views
843 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
893
On SlideShare
0
From Embeds
0
Number of Embeds
121
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introduction to Node.js

  1. 1. Introduction to Node.js Please rate this talk: http://spkr8.com/t/19141Monday, January 14, 13
  2. 2. Our Goals • What Node Isnt 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 NPMMonday, January 14, 13
  3. 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. 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. 5. Who Are You? (I hope) • Experienced with JavaScript • Experience with some other server framework • Familiar with the Unix Tool Chain • Familiar with GitMonday, January 14, 13
  6. 6. What Node Isnt and Is? • What Node Isnt? • What Node Is? • How to Spell It?Monday, January 14, 13
  7. 7. What Node Isnt?Monday, January 14, 13
  8. 8. What Node Is? • The Official Answer • It is built on Googles V8 • The Server and the App Are OneMonday, January 14, 13
  9. 9. The Official Answer • Node.js is a platform built on Chromes 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. 10. It is built on Googles V8 • Google’s Open Source JavaScript Engine • V8 is really fast • It is compiled, sort ofMonday, January 14, 13
  11. 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 RequestMonday, January 14, 13
  12. 12. How to Spell It? • Node.js • Node.JS • Node (my preferred spelling)Monday, January 14, 13
  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. 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. 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. 16. Node Workflow • The REPL • Developing • PublishingMonday, January 14, 13
  17. 17. The REPL • Read - Eval - Print Loop • Brings JavaScript to the command line • Allows all JavaScript commands • Isn’t Really too usefulMonday, January 14, 13
  18. 18. Developing • Text Editor / Terminal • VIM • WebStormMonday, January 14, 13
  19. 19. Publishing with Git • Git • Microsoft Azure • HerokuMonday, January 14, 13
  20. 20. Three Key Ideas • Callbacks • Events • ModulesMonday, January 14, 13
  21. 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. 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 alsoMonday, January 14, 13
  23. 23. Modules • Based on CommonJS • Solves the Issue of the JavaScript Global Object • Modules are wrapped in anonymous functionsMonday, January 14, 13
  24. 24. Modules (function() { /* contents of module file */ })();Monday, January 14, 13
  25. 25. Introducing NPM • Node Package Manager • http://npmjs.org • Core • Userland • Types of Installs • Don’t Re-invent the WheelMonday, January 14, 13
  26. 26. Core • Packages that are internal to Node • Defined in Nodes source in the lib/ folder • Modules like: http, util, fs, etc.Monday, January 14, 13
  27. 27. Userland • Modules loaded from NPM or other • npm install <module name> • npm install -g <module name>Monday, January 14, 13
  28. 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 sudoMonday, January 14, 13
  29. 29. Don’t Re-invent the Wheel • There are over 20k Packages already defined • Most of your problems have already been solvedMonday, January 14, 13
  30. 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. 31. Top Ten Packages • #9 coffee-script CoffeeScript is a little language that compiles into JavaScript.Monday, January 14, 13
  32. 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. 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. 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. 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. 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. 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. 38. Top Ten Packages • #2 request Simplified HTTP request client.Monday, January 14, 13
  39. 39. Top Ten Packages • #1 Express Fast, unopinionated, minimalist web framework for node.Monday, January 14, 13
  40. 40. A WebsiteMonday, January 14, 13
  41. 41. A RESTful Web ServiceMonday, January 14, 13
  42. 42. Why Node? • Avoids the Web Dev Context Switch • Gives You Full Control of the Server • Makes Asynchronous Coding Easy • Node is FunMonday, January 14, 13
  43. 43. Resources • http://nodejs.org • http://npmjs.org • http://nodetuts.com • http://howtonode.org • http://package.json.nodejitsu.comMonday, January 14, 13
  44. 44. Summary • What Node Isnt 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 NPMMonday, January 14, 13

×