651-905-3729 Microsoft Silver Learning Partner EC Counsel Reseller compTIA Authorized Partner

Node.js Software Development

3 Days

Description

Our Node.js class introduces Node.js as a platform. Node.js is an open source framework which runs on various platforms, such as Windows, Linux, Unix, Mac OS X, etc. It is build on Chrome's JavaScript runtime for easily building fast and scalable network applications. Node.js uses JavaScript on the server. Node.js can be used to create console, desktop, web services, and web applications.

Objectives:

  • Introduction to Node.js
  • Module and dependency management
  • The file system module
  • Events in Node.js
  • Asynchronous Programming with Callbacks
  • Asynchronous Programming with Promises
  • Build and Dependency Management
  • Basic Web Application Development
  • Debugging and Unit Testing
  • Introduction to Express
  • Express Middleware
  • Accessing MongoDb from Node.js
  • Jade template engine
  • Clustering and failover
  • Microservices with Node.js
  • SuperTest and Nock
  • New features in Node.js version 4,6, and 8

Topics

  • Learn what Node.js is and how its best used
  • Install and configure Node.js using platform installation packages and source code
  • Manage Node.js Packages with the Node Package Manager
  • Use and create Node.js Modules
  • Configure and secure a Web Application
  • Utilize file and stream resources with Node.js
  • Understand common Node.js programming patterns
  • Explore performance issues with Node.js
  • Troubleshoot Node.js problems

No Upcoming Public Classes

There are currently no public events available for this course. However, you can submit a request for a new date and we will try our best to get you into a Node.js Software Development class.

Private Training Available
No date scheduled, don’t see a date that works for you or looking for a private training event, please call 651-905-3729 or submit a request for further information here.
request a private session or new date

Course Overview

Chapter 1. Introduction to Node.js

What Is Node.js?
Applications of Node.js
Installing Node.js and NPM
"Hello, Node World!"
How It Works
Node.js is built on JavaScript: Benefits
Traditional Server-Side I/O Model
Disadvantages of the Traditional Approach
Event-Driven, Non-Blocking I/O
Concurrency
Using Node Package Manager (NPM)
The Express Server Framework
Summary

Chapter 2. Module and Dependency Management

Nature of a Node.js Project
Introduction to Modules
A Simple Module
Using the Module
Directory Based Modules
Example Directory Based Module
Using the Module
Making a Module Executable
Core Modules
Loading Module from node_modules Folders
Dependency Management Using NPM
Installing a Package
About Global Installation
Setting Up Dependency
Package Version Numbering Syntax
Updating Packages
Uninstalling Packages
Alternate Dependency Management
Summary

Chapter 3. The File System Module

Introduction
Basic File Manipulation
Getting File/Directory Meta Data
Read an Entire File
The Buffer Class
Writing to a File
Reading in Chunks
Writing in Chunks
The open() Method
Stream API
The Readable Interface
Example Reading Data in Chunks
The Writable Interface
Summary

Chapter 4. Events in Node JS

Event Driven Programming
Event Emitter
EventEmitter Class
EventEmitter Class – Inheritance
The Event Loop and Event Handler
Phases Overview
Event Handlers
Example (Using EventEmitter as an Object)
Example (Inheriting from EventEmitter)
EventEmitter Functions
Issue with 'this' Keyword in Callback Functions
Issue with 'this' Keyword in Callback Functions (cont.)
Handling this Problem
Controlling Event Callbacks in the Event Loop
Summary

Chapter 5. Asynchronous Programming with Callbacks

Synchronous and Asynchronous
Callbacks
Creating a Callback Function
Calling The Callback Function
Callback - Another Example
Issue with 'this' Keyword in Callback Functions
Handling this Problem
Handling this Problem – Method 1 (Storing in Another Variable)
Handling this Problem – Method 2 (Using Bind Function)
Handling this Problem – Method 3 (Using ES6 Arrow Functions)
Error Handling without Callback
Error Handling with Callback
Asynchronous Callback
setImmediate() and nextTick()
API Example
Summary

Chapter 6. Asynchronous Programming with Promises

The Problems with Callbacks
Introduction to Promises
Requirements for Using Promises
Creating Promises Manually
Calling the Promise-based Function
Making APIs that support both callbacks and promises
Using APIs that support both callbacks and promises
Chaining then Method / Returning a Value or a Promise from then Method
Promisifying Callbacks with Bluebird
Using Bluebird
Bluebird – List of Useful Functions
Benefit of using Bluebird over ES6 for Promisification
Error Handling in Promise-based asynchronous functions
Summary

Chapter 7. Build and Dependency Management

Introduction
Bower Package Manager
Managing Packages Using Bower
Using Bower Packages
Describing Dependency
Grunt Build Manager
Installing Grunt Components
Writing a Grunt Build Script
Running Grunt
Running the JSHint Task
Compiling 'Less' Files
Compressing CSS Files
Gulp Build Manager
Gulp vs. Grunt
Installing Gulp Components
Writing a Build Script
Running Gulp
Compiling Less Files
Summary

Chapter 8. Basic Web Application Development

Introduction to the HTTP Module
The Request Handler Callback Function
The Server Object
Example Use of Server Object
The Request Object
The Response Object
Parsing Request Body
Serving Static Files
The HTTP Client API
Making POST/PUT/etc. Requests
Where To go from Here?
Summary

Chapter 9. Debugging and Unit Testing

Problem Determination Options
Using console.log
Using the 'debug' Logging Package
Configure Logging
The 'Node Inspector' Debugger
Basic Usage of the Debugger
Unit Testing Node.js Applications
Getting Setup
Writing a Test Script
Running Unit Test
Testing Asynchronous Code
Using the Chai Assert API
The Chai Expect API
Summary

Chapter 10. Introduction to Express

Introduction to Express
Basic Routing Example
Defining Routing Rules
Route Path
The Response Object
Supplying URL Parameters
Ordering of Routes
Defining Catch-All Route
Full Example Web Service
Summary

Chapter 11. Express Middleware

Introduction to Express Middleware
Writing a Middleware Function
Binding to a Path
Order of Execution
Raising Error
Handling Error
Serving Static Files
Handling POST Request Body
Enable Response Compression
Summary

Chapter 12. Accessing MongoDB from Node.js

Getting Started
The Connection URL
Obtaining a Collection
Inserting Documents
Updating a Document
Querying for Documents
Deleting a Document
Connection Pooling
Summary

Chapter 13. Pug Template Engine

Introduction to Pug
Using Pug
A Simple Template
Passing Data to a Template
Basic HTML Tag Rendering
Rendering Values
Conditional Rendering
Rendering a List
Layout Template
Creating a Layout Template
Creating a Content Template
Summary

Chapter 14. Clustering and Failover

Process Management
Managing the Process Using OS Tools
Installing a Service in Windows
Create an Upstart Script in Ubuntu
Process Management Using forever
Clustering Basics
Example Clustered Application
More About Clustering
Child Process Failover
Summary

Chapter 15. Microservices with Node.js

Microservices
Microservices with Node.js
The Express Package
Installing and Using Express
Defining Routing Rules in Express
Route Path
The Response Object
A Simple Web Service with Express Example
Composite Services
Example - Call an API Using a Promise
Using the callApi() Function
Summary

Chapter 16. Supertest and Nock

SuperTest
Sample Service
Test without a Testing Framework
Test with a Testing Framework
Using Promises with SuperTest
Nock
Example
Example – Request Body
Using Query String
Specifying Replies
Summary

Chapter 17. Important Node features introduced over the years

Node History
Node Version Policy
LTS Release Schedule
Changes in Node.js
'npm' Modules and Native Code
Node 4.x
Arrow Functions
Arrow Functions As Parameters
Using 'this' Within Arrow Functions
ES2015 Classes
Declaring Classes
Declaring Instance Methods
Accessor Methods
Static Methods
Inheritance With Classes
Generator Functions
Generator Example
Controlling Generator Execution - next(value)
Controlling Generator Execution - return(value)
Controlling Generator Execution - throw(exception)
Generator Recursion With 'yield*'
Tail Call Optimization
'const' and 'let'
Variable Scope
Shadowing Variables
Node 5.x
Spread Operator
Node 6.x
Rest Parameter
Node 7.x
Node 8.x
Node 12.x
ES6 Module Support
Private Class Fields
Node 14.x
Diagnostic Reporting
Diagnostic Reporting Command Arguments
V8 Upgraded to V8.1
Nullish Coalescing Operator
Optional Chaining
Intl.DisplayName
Intl.DisplayName (contd.)
Summary

Chapter 18. Build and dependency management with npm

JS
Problems and solutions
Package managers
npm
npm does several things
Holds project metadata
npm as a package manager
npm enables us to install JS packages locally or globally
npm manages libraries
Note the use of semver here
The dependency can be...
npm installs libraries in a controlled way
npm installs from the Internet
Weight
npm config files
Secure sites that can't use the public npm
npm automates running
tl;dr

Chapter 19. How to test JavaScript

Introduction
tl;dr
How might you test if new passwords don't match, an error message shows?
Thus, many tools have been developed
These all use assertions
Why would I want a different assertion library?
What is unit testing? A unit test tests one unit of work
What is NOT unit testing? ... Anything else!
Benefits of unit testing
Next, what is TDD?
Benefits of TDD
The Red Phase
You want to write positive tests and negative tests
The Green Phase
Let's see how to do this with Jest
Jest is a test runner that's evolved over many years
To get Jest, install it with npm
We can organize our tests in modules or suites
describe()
test()
Jest's built-in assertions have expectations and matchers
The matchers are pretty simple
The most basic check is toBeTruthy()
How to test for equality
toThrow()
Setups and teardowns
Sharing variables between tests is easy
How to test browser things
Karma
Karma is a browser test runner
To run tests, you will tell Karma ...
Mocha
tl;dr
Further study

Lab Exercises

Lab 1. Getting Started With Node.js
Lab 2. Basics of a Node.js Module using ES5 Functions
Lab 3. Basics of a Node.js Module using ES6 Classes
Lab 4. Using Node Package Manager (npm)
Lab 5. Building Module Dependency
Lab 6. Using the Stream API
Lab 7. Events in Node.js
Lab 8. Asynchronous Programming with Callbacks
Lab 9. Asynchronous Programming with Promises
Lab 10. Basic Web Application Development
Lab 11. Debugging a Node.js Application
Lab 12. Introduction to Unit Testing
Lab 13. Logging with Morgan
Lab 14. Web Service Using Express
Lab 15. Using MongoDB
Lab 16. Using the Pug Template Engine
Lab 17. Clustering a Node.js Application
Lab 18. MicroServices with Node
Lab 19. Test RESTful API with Supertest
Lab 20. Mock RESTful API with Nock

No Upcoming Public Classes

There are currently no public events available for this course. However, you can submit a request for a new date and we will try our best to get you into a Node.js Software Development class.

Private Training Available
No date scheduled, don’t see a date that works for you or looking for a private training event, please call 651-905-3729 or submit a request for further information here.
request a private session or new date

Prerequisites

Participants should be familiar with JavaScript and Web App concepts

No Upcoming Public Classes

There are currently no public events available for this course. However, you can submit a request for a new date and we will try our best to get you into a Node.js Software Development class.

Private Training Available
No date scheduled, don’t see a date that works for you or looking for a private training event, please call 651-905-3729 or submit a request for further information here.
request a private session or new date