Node.js Notes for Professionals

Programming · notes

Browse all développement web documents

Node.js

Notes for Professionals

Node.js

Notes for Professionals

300+ pages

of professional hints and tricks

GoalKicker.com

Free Programming Books

Disclaimer

This is an unocial free book created for educational purposes and is

not aliated with ocial Node.js group(s) or company(s).

All trademarks and registered trademarks are

the property of their respective owners

Contents

About

...................................................................................................................................................................................

1

Chapter 1: Getting started with Node.js

............................................................................................................

2

Section 1.1: Hello World HTTP server

Section 1.2: Hello World command line

Section 1.3: Hello World with Express

Section 1.4: Installing and Running Node.js

Section 1.5: Debugging Your NodeJS Application

Section 1.6: Hello World basic routing

Section 1.7: Hello World in the REPL

Section 1.8: Deploying your application online

Section 1.9: Core modules

Section 1.10: TLS Socket: server and client

Section 1.11: How to get a basic HTTPS web server up and running!

...........................................................................................................................

.......................................................................................................................

..........................................................................................................................

.................................................................................................................

......................................................................................................

.........................................................................................................................

............................................................................................................................

...........................................................................................................

.............................................................................................................................................

................................................................................................................

14

.....................................................................

16

Chapter 2: npm

............................................................................................................................................................

19

.................................................................................................................................

............................................................................................................................

.....................................................................................................

.......................................................................................................................................

.....................................................................................................................

.............................................................................................................................

Section 2.1: Installing packages

Section 2.2: Uninstalling packages

Section 2.3: Setting up a package configuration

Section 2.4: Running scripts

Section 2.5: Basic semantic versioning

Section 2.6: Publishing a package

Section 2.7: Removing extraneous packages

Section 2.8: Listing currently installed packages

Section 2.9: Updating npm and packages

Section 2.10: Scopes and repositories

Section 2.11: Linking projects for faster debugging and development

Section 2.12: Locking modules to specific versions

Section 2.13: Setting up for globally installed packages

..........................................................................................................

.....................................................................................................

...............................................................................................................

.......................................................................................................................

..................................................................

27

.................................................................................................

.........................................................................................

Chapter 3: Web Apps With Express

....................................................................................................................

30

.........................................................................................................................................

...........................................................................................................................................

.................................................................................................................

.......................................................................................................................

.......................................................................................................................

...................................................................................................................................

.................................................................................................................................

.........................................................................................................................................

................................................................................................................

......................................................................................................................

Section 3.1: Getting Started

Section 3.2: Basic routing

Section 3.3: Modular express application

Section 3.4: Using a Template Engine

Section 3.5: JSON API with ExpressJS

Section 3.6: Serving static files

Section 3.7: Adding Middleware

Section 3.8: Error Handling

Section 3.9: Getting info from the request

Section 3.10: Error handling in Express

Section 3.11: Hook: How to execute code before any req and after any res

Section 3.12: Setting cookies with cookie-parser

Section 3.13: Custom middleware in Express

Section 3.14: Named routes in Django-style

Section 3.15: Hello World

Section 3.16: Using middleware and the next callback

Section 3.17: Error handling

Section 3.18: Handling POST Requests

.............................................................................................................................................

............................................................................................

........................................................................................................................................

......................................................................................................................

........................................................

38

.....................................................................................................

............................................................................................................

.............................................................................................................

4

5

6

6

7

7

8

9

9

19

22

23

24

24

25

26

26

26

27

28

28

30

31

Advertisement

32

33

34

35

36

36

37

38

39

39

39

40

40

42

43

Chapter 4: Filesystem I/O

......................................................................................................................................

45

...........................................................................................................

.....................................................................

............................................................................................................

......................................................................................................

.............................................................................................

..................................................................................................

...............................................................................................

Section 4.1: Asynchronously Read from Files

Section 4.2: Listing Directory Contents with readdir or readdirSync

Section 4.3: Copying files by piping streams

Section 4.4: Reading from a file synchronously

Section 4.5: Check Permissions of a File or Directory

Section 4.6: Checking if a file or a directory exists

Section 4.7: Determining the line count of a text file

Section 4.8: Reading a file line by line

Section 4.9: Avoiding race conditions when creating or using an existing directory

Section 4.10: Cloning a file using streams

Section 4.11: Writing to a file using writeFile or writeFileSync

Section 4.12: Changing contents of a text file

Section 4.13: Deleting a file using unlink or unlinkSync

Section 4.14: Reading a file into a Buer using streams

Chapter 5: Exporting and Consuming Modules

.................................................................................................................

.................................................................................

..........................................................................................................

...........................................................................................

.........................................................................................

...........................................................................................

.......................................................................................................................

...........................................

49

Section 5.1: Creating a hello-world.js module

Section 5.2: Loading and using a module

Section 5.3: Folder as a module

Section 5.4: Every module injected only once

Section 5.5: Module loading from node_modules

Section 5.6: Building your own modules

Section 5.7: Invalidating the module cache

...........................................................................................................

................................................................................................................

.................................................................................................................................

..........................................................................................................

...................................................................................................

56

...................................................................................................................

..............................................................................................................

Chapter 6: Exporting and Importing Module in node.js

..........................................................................

58

Section 6.1: Exporting with ES6 syntax

Section 6.2: Using a simple module in node.js

......................................................................................................................

58

.........................................................................................................

58

Chapter 7: How modules are loaded

................................................................................................................

59

Section 7.1: Global Mode

Section 7.2: Loading modules

Chapter 8: Cluster Module

Section 8.1: Hello World

Section 8.2: Cluster Example

.............................................................................................................................................

59

....................................................................................................................................

59

.....................................................................................................................................

..............................................................................................................................................

......................................................................................................................................

Chapter 9: Readline

...................................................................................................................................................

62

Section 9.1: Line-by-line file reading

Section 9.2: Prompting user input via CLI

..........................................................................................................................

62

.................................................................................................................

62

Chapter 10: package.json

.......................................................................................................................................

63

Section 10.1: Exploring package.json

Section 10.2: Scripts

Section 10.3: Basic project definition

Section 10.4: Dependencies

Section 10.5: Extended project definition

.........................................................................................................................

.....................................................................................................................................................

.........................................................................................................................

........................................................................................................................................

..................................................................................................................

68

Chapter 11: Event Emitters

.....................................................................................................................................

69

.......................................................................................................................................................

Section 11.1: Basics

Section 11.2: Get the names of the events that are subscribed to

Section 11.3: HTTP Analytics through an Event Emitter

Section 11.4: Get the number of listeners registered to listen for a specific event

..........................................................................

...........................................................................................

...............................................

70

Chapter 12: Autoreload on changes

..................................................................................................................

72

Section 12.1: Autoreload on source code changes using nodemon

Section 12.2: Browsersync

Chapter 13: Environment

..........................................................................................................................................

.........................................................................................................................................

.......................................................................

72

45

45

46

47

Advertisement

47

48

49

49

50

51

51

52

52

53

53

54

55

55

56

57

60

60

60

63

66

67

67

69

69

70

72

74

Section 13.1: Accessing environment variables

Section 13.2: process.argv command line arguments

Section 13.3: Loading environment properties from a "property file"

Section 13.4: Using dierent Properties/Configuration for dierent environments like dev, qa, staging etc

.........................................................................................................

.............................................................................................

...................................................................

74

74

75

................................................................................................................................................................................

75

Chapter 14: Callback to Promise

Section 14.1: Promisifying a callback

Section 14.2: Manually promisifying a callback

Section 14.3: setTimeout promisified

........................................................................................................................

.........................................................................................................................

........................................................................................................

77

.........................................................................................................................

78

Chapter 15: Executing files or commands with Child Processes

.........................................................

79

Section 15.1: Spawning a new process to execute a command

Section 15.2: Spawning a shell to execute a command

Section 15.3: Spawning a process to run an executable

..............................................................................

79

...........................................................................................

.........................................................................................

Chapter 16: Exception handling

...........................................................................................................................

82

Section 16.1: Handling Exception In Node.Js

Section 16.2: Unhanded Exception Management

Section 16.3: Errors and Promises

.............................................................................................................

82

.....................................................................................................

83

..............................................................................................................................

84

Chapter 17: Keep a node application constantly running

.....................................................................

86

Section 17.1: Use PM2 as a process manager

Section 17.2: Running and stopping a Forever daemon

Section 17.3: Continuous running with nohup

...........................................................................................................

86

.........................................................................................

87

...........................................................................................................

88

Chapter 18: Uninstalling Node.js

.........................................................................................................................

89

Section 18.1: Completely uninstall Node.js on Mac OSX

Section 18.2: Uninstall Node.js on Windows

Chapter 19: nvm - Node Version Manager

...........................................................................................

89

..............................................................................................................

.....................................................................................................

..............................................................................................................................................

...............................................................................................................................

Section 19.1: Install NVM

Section 19.2: Check NVM version

Section 19.3: Installing an specific Node version

Section 19.4: Using an already installed node version

Section 19.5: Install nvm on Mac OSX

Section 19.6: Run any arbitrary command in a subshell with the desired version of node

Section 19.7: Setting alias for node version

......................................................................................................

............................................................................................

........................................................................................................................

..............................................................................................................

92

.................................

91

Chapter 20: http

..........................................................................................................................................................

93

Section 20.1: http server

Section 20.2: http client

Chapter 21: Using Streams

..............................................................................................................................................

..............................................................................................................................................

Section 21.1: Read Data from TextFile with Streams

Section 21.2: Piping streams

Section 21.3: Creating your own readable/writable stream

Section 21.4: Why Streams?

.....................................................................................................................................

95

.......................................................................................................................................

...............................................................................................

...................................................................................

96

.......................................................................................................................................

97

Chapter 22: Deploying Node.js applications in production

...................................................................

99

Section 22.1: Setting NODE_ENV="production"

Section 22.2: Manage app with process manager

Section 22.3: Deployment using process manager

Section 22.4: Deployment using PM2

Advertisement

Section 22.5: Using dierent Properties/Configuration for dierent environments like dev, qa, staging etc

......................................................................................................................

................................................................................................

...............................................................................................

........................................................................................................

100

100

101

99

.............................................................................................................................................................................

102

Section 22.6: Taking advantage of clusters

Chapter 23: Securing Node.js applications

...........................................................................................................

103

..................................................................................................

104

77

77

79

80

89

90

90

90

90

90

91

93

94

95

95

..............................................................................................................................

104

Section 23.1: SSL/TLS in Node.js

Section 23.2: Preventing Cross Site Request Forgery (CSRF)

Section 23.3: Setting up an HTTPS server

Section 23.4: Using HTTPS

Section 23.5: Secure express.js 3 Application

..............................................................................................................

.......................................................................................................................................

.........................................................................................................

..............................................................................

104

Chapter 24: Mongoose Library

.........................................................................................................................

109

...........................................................................................

109

Section 24.1: Connect to MongoDB Using Mongoose

Section 24.2: Find Data in MongoDB Using Mongoose, Express.js Routes and $text Operator

Section 24.3: Save Data to MongoDB using Mongoose and Express.js Routes

Section 24.4: Find Data in MongoDB Using Mongoose and Express.js Routes

Section 24.5: Useful Mongoose functions

Section 24.6: Indexes in models

Section 24.7: find data in mongodb using promises

...............................................................................................................

...............................................................................................................................

.......................

109

.................................................

..................................................

.............................................................................................

Chapter 25: async.js

................................................................................................................................................

120

........................................................................................................................

120

............................................................................

121

Section 25.1: Parallel : multi-tasking

Section 25.2: async.each(To handle array of data eciently)

Section 25.3: Series : independent mono-tasking

Section 25.4: Waterfall : dependent mono-tasking

Section 25.5: async.times(To handle for loop in better way)

Section 25.6: async.series(To handle events one by one)

..................................................................................................

...............................................................................................

...............................................................................

....................................................................................

Chapter 26: File upload

..........................................................................................................................................

125

Section 26.1: Single File Upload using multer

Section 26.2: Using formidable module

Chapter 27: Socket.io communication

.........................................................................................................

125

..................................................................................................................

...........................................................................................................

Section 27.1: "Hello world!" with socket messages

.................................................................................................

128

Chapter 28: Mongodb integration

...................................................................................................................

129

....................................................................................................................................

129

.......................................................................................................

129

Section 28.1: Simple connect

Section 28.2: Simple connect, using promises

Section 28.3: Connect to MongoDB

Section 28.4: Insert a document

Section 28.5: Read a collection

Section 28.6: Update a document

Section 28.7: Delete a document

Section 28.8: Delete multiple documents

.........................................................................................................................

..............................................................................................................................

................................................................................................................................

...........................................................................................................................

.............................................................................................................................

...............................................................................................................

105

107

107

111

113

115

115

117

122

123

124

124

126

128

129

130

131

131

132

132

Chapter 29: Handling POST request in Node.js

.........................................................................................

134

Advertisement

Section 29.1: Sample node.js server that just handles POST requests

................................................................

134

Chapter 30: Simple REST based CRUD API

Section 30.1: REST API for CRUD in Express 3+

..................................................................................................

135

......................................................................................................

135

Chapter 31: Template frameworks

..................................................................................................................

136

Section 31.1: Nunjucks

................................................................................................................................................

136

Chapter 32: Node.js Architecture & Inner Workings

...............................................................................

138

Section 32.1: Node.js - under the hood

Section 32.2: Node.js - in motion

....................................................................................................................

138

.............................................................................................................................

138

Chapter 33: Debugging Node.js application

...............................................................................................

139

Section 33.1: Core node.js debugger and node inspector

.....................................................................................

139

Chapter 34: Node server without framework

...........................................................................................

142

Section 34.1: Framework-less node server

Section 34.2: Overcoming CORS Issues

.............................................................................................................

142

..................................................................................................................

143

Chapter 35: Node.JS with ES6

............................................................................................................................

144

Section 35.1: Node ES6 Support and creating a project with Babel

Section 35.2: Use JS es6 on your NodeJS app

......................................................................................................

145

.....................................................................

144

Chapter 36: Interacting with Console

.............................................................................................................

148

Section 36.1: Logging

................................................................................................................................................

148

Chapter 37: Cassandra Integration

.................................................................................................................

150

Section 37.1: Hello world

...........................................................................................................................................

150

Chapter 38: Creating API's with Node.js

........................................................................................................

151

Section 38.1: GET api using Express

Section 38.2: POST api using Express

.........................................................................................................................

151

.....................................................................................................................

151

Chapter 39: Graceful Shutdown

........................................................................................................................

153

Section 39.1: Graceful Shutdown - SIGTERM

...........................................................................................................

153

Chapter 40: Using IISNode to host Node.js Web Apps in IIS

..............................................................

154

Section 40.1: Using an IIS Virtual Directory or Nested Application via <appSettings>

Section 40.2: Getting Started

Section 40.3: Basic Hello World Example using Express

Section 40.4: Using Socket.io with IISNode

.......................................................................................

.............................................................................................................

...................................................................................................................................

.......................................

154

Chapter 41: CLI

...........................................................................................................................................................

158

Section 41.1: Command Line Options

.......................................................................................................................

158

Chapter 42: NodeJS Frameworks

Section 42.1: Web Server Frameworks

Section 42.2: Command Line Interface Frameworks

....................................................................................................................

....................................................................................................................

............................................................................................

161

Chapter 43: grunt

.....................................................................................................................................................

163

Section 43.1: Introduction To GruntJs

Section 43.2: Installing gruntplugins

......................................................................................................................

163

........................................................................................................................

164

Chapter 44: Using WebSocket's with Node.JS

..........................................................................................

165

Section 44.1: Installing WebSocket's

Section 44.2: Adding WebSocket's to your file's

Section 44.3: Using WebSocket's and WebSocket Server's

Section 44.4: A Simple WebSocket Server Example

....................................................................................................

..................................................................................

165

..............................................................................................

165

........................................................................................................................

155

155

157

161

161

165

165

Chapter 45: metalsmith

........................................................................................................................................

166

Section 45.1: Build a simple blog

....................................................................