getting started with node.js with derek watson
DESCRIPTION
This high-level introduction to node.js gives the casual JavaScript developer everything they need to start building web applications, JSON APIs, network servers and more. Let Derek Watson, tech lead at The Working Group, veteran developer and JavaScript fanatic share key insights into this exciting new platform. presented live at FITC's Spotlight: MEAN Stack event held on March 29, 2014 More info at FITC.caTRANSCRIPT
![Page 1: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/1.jpg)
Intro to Node.js Derek Watson
Mar 29, 2014
![Page 2: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/2.jpg)
Story time!
JavaScript
Pretty cool language #javascript
The Working Group
Software shop @twg
Derek Watson
Developer guy @dcwca
and me
![Page 3: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/3.jpg)
what is it good for?
![Page 4: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/4.jpg)
What is it good for?
• JSON APIs
#twg@twg
![Page 5: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/5.jpg)
What is it good for?
• JSON APIs
• Network servers
#twg@twg
![Page 6: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/6.jpg)
What is it good for?
• JSON APIs
• Network servers
• Realtime applications
#twg@twg
![Page 7: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/7.jpg)
!
MODULES
![Page 8: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/8.jpg)
everything is a module
![Page 9: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/9.jpg)
Modules everywhere
• Your app code is written as modules
• Libraries you use are modules
• Your whole app is one big module
#twg@twg
![Page 10: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/10.jpg)
doge.js: An example module
#twg@twg
![Page 11: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/11.jpg)
doge.js
![Page 12: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/12.jpg)
program.js
![Page 13: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/13.jpg)
Try it out!
![Page 14: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/14.jpg)
“The main thing that distinguishes legacy code is a lack of tests.”
- Michael Feathers
![Page 15: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/15.jpg)
test/doge.js
![Page 16: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/16.jpg)
test/doge.js
![Page 17: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/17.jpg)
test/doge.js
![Page 18: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/18.jpg)
![Page 19: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/19.jpg)
server.js
![Page 20: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/20.jpg)
server.js
![Page 21: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/21.jpg)
Try it out!
![Page 22: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/22.jpg)
server.js
![Page 23: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/23.jpg)
package.json
![Page 24: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/24.jpg)
Module Learnings
• Write some code
• Export: module.exports = { say: say }
• Import: var doge = require(‘../doge’)
• Write some tests
• Compose modules into apps
• The outside world: package.json
#twg@twg
![Page 25: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/25.jpg)
NODE.JS API
![Page 26: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/26.jpg)
![Page 27: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/27.jpg)
QUALITY: • Very well documented • Almost completely stable • Moving towards 1.0
!QUANTITY:
• As small as possible • You can learn it in a day or two
Core API
#twg@twg
![Page 28: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/28.jpg)
NODE PACKAGE MANAGER
![Page 29: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/29.jpg)
65,000 packages
![Page 30: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/30.jpg)
![Page 31: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/31.jpg)
But which packages are good?
• Learn to sniff out the quality
• Read npm’s Most Starred, Most Required
• Build your own bag of tricks
#twg@twg
![Page 32: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/32.jpg)
express, restify jade, stylus
mongoose, sequelize async, q
ws, primus mocha, chai
yargs bunyan forever
![Page 33: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/33.jpg)
“It’s not what you know, it’s who you know”
- Abraham Lincoln
![Page 34: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/34.jpg)
substack
caolanbriancv1feross
tjholowaychuk isaacs henrikjoreteg
![Page 35: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/35.jpg)
![Page 36: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/36.jpg)
Node.js is General-Purpose
• Conventional web apps
#twg@twg
![Page 37: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/37.jpg)
Node.js is General-Purpose
• Conventional web apps
• Realtime web apps
#twg@twg
![Page 38: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/38.jpg)
Node.js is General-Purpose
• Conventional web apps
• Realtime web apps
• Cross-platform desktop apps
#twg@twg
![Page 39: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/39.jpg)
Node.js is General-Purpose
• Conventional web apps
• Realtime web apps
• Cross-platform desktop apps
• Network servers
#twg@twg
![Page 40: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/40.jpg)
CONTROL ROBOTS
#twg@twg
![Page 41: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/41.jpg)
Inclusive, friendly people who are open to learning and teaching
!Toronto Node.JS Meetup
Currently hosted at the TWG studio !
Amazing conferences Such as this one! And many others
Vibrant Community
#twg@twg
![Page 42: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/42.jpg)
#twg@twg
NodeUp Podcast - Team Episodes
![Page 43: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/43.jpg)
#twg@twg
Node.js Low barrier to entry
Simple
Powerful
BE EXCITEDbe, be excited
![Page 45: Getting Started with Node.JS with Derek Watson](https://reader033.vdocuments.net/reader033/viewer/2022051412/54c8562f4a79597a338b4569/html5/thumbnails/45.jpg)
Thank You.