Essential Node.js for Web Developers from Developer Week 2013

Preview:

Citation preview

1 1

Essential Node for Web Developers Mike Amundsen

Principal API Architect

Layer 7 Technologies

@mamund

2 2

Mike Amundsen

Web Architect, Author, Presenter

Software Explorer

Principal API Architect, Layer 7 Technologies

Preliminaries

3 3

Building Hypermedia APIs w/ HTML5 & Node (November 2011)

Methodology for writing/maintaining business-level APIs in the cloud.

Real solutions for real use-cases.

Three Servers, Six Clients, 200+ pages.

Last Project

4 4

RESTful Web APIs (Summer 2013)

Co-author with Leonard Richardson

Follow up to Richardson/Ruby’s RESTful Web Services (2007)

Focus on scaling up application-level interoperability with hypermedia

Beyond HTML, XML, and JSON is …

Next Project

5 5

Let's start with a bit of

Philosophy...

6 6

Unix Philosophy

Write programs that do one thing and do it well.

Write programs to work together.

Write programs to handle text streams.

- Douglas McIlroy

7 7

Node Philosophy (possible)

• Write modules that do one thing and do it well.

• Write modules to work together.

• Write modules to handle streams and events

8 8

Eric S. Raymond's Design Rules

"Rule of Diversity: Distrust all claims for one true way"

-- Eric S. Raymond

9 9

Reminder:

My Examples

are NOT

the

"One True Way"

10 10

Essentially, Node is...

"...a platform built on Chrome's JavaScript runtime for

easily building fast, scalable network applications."

11 11

Node is…

“Node is intended to be a very low-level library that

facilitates higher-level extensions and abstractions in

userland. It is more like C than it is like Python, and that is

by design.” – Isaac Schlueter

12 12

And it's different because....

"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."

13 13

So that means....

"Most of the applications we're writing today are heavily

I/O bound. Because of the event-driven nature of

JavaScript (and Node by extension), whatever you write

with it is going to be very fast." - Guillermo Rauch

(socket.io)

14 14

But does it run on my machine?

"To build a diverse open source

community, you need a wide

platform," - Paul Querna,

Rackspace

15 15

Essential NodeJS on a single slide (well, almost)

16 16

Ok, introduce me then...

17 17

Hello, Node!

18 18

Ok, but how do I deliver files?

19 19

Ok, but how do I deliver files using streams?

20 20

Not bad; how about HTML Forms?

21 21

Cool. Now how about a server-side mash-up?

22 22

Yeah, but how do you write files?

23 23

What about HTTP Authentication?

24 24

Ok, but where's that "sockets" stuff?

25 25

Alright, how about MVC & routing?

26 26

Hey, this is all 'async' & hard, right?

27 27

So are there lots of libraries?

28 28

So are there lots of libraries?

29 29

Bottom Line…

While Node *is* Javascript, the ethos is closer to C/Unix

Don’t get tied up in the “Evented IO” stuff; just write your code and enjoy

Async is the future; learn to love the future.

Get to know the NPM library; lots of good stuff there.

Check out Shelly Power’s “Learning Node” book

30 30

So....

31 31

Node.js...

• “Low-level” Javascript

• Non-blocking I/O

• Cross Platform

• Pages, Forms, Services, APIs, Sockets

• MVC, Templates, ...

• 1000s of available libraries

• All Open Source

Oh yeah, one more question...

32 32

Why not join the hipster Nod-ies?

33 33

Essential Node for Web Developers Mike Amundsen

Principal API Architect

Layer 7 Technologies

@mamund

Recommended