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 unocial free book created for educational purposes and is
not aliated with ocial 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
Publicité
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 Buer 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
Publicité
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 dierent Properties/Configuration for dierent 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
Publicité
Section 22.5: Using dierent Properties/Configuration for dierent 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 eciently)
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
Publicité
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
....................................................................