Course Outline
JavaScript/TypeScript (2 days)
Getting Started
- ECMAScript and JavaScript/TypeScript Introduction
- JavaScript Dynamic and Loose Typing
- TypeScript Static and Strong Typing
- TypeScript Generic Types
- Variable Declarations (var, const & let)
- Primitive Types (number, string, Boolean, symbol, bigint, undefined, null)
- JavaScript Memory Structure
Functions, Arrays & Objects
- Function Declarations and Expressions
- Arrow Syntax
- Value of "this" and function types (call-site this and lexical this)
- Function Arguments and Parameters
- Spread and Rest Operators and Functions
- Functions as Objects
- Arrays and Array Literal Syntax
- Array API
- Immutable Operations with Arrays
- Array Destructuring and Spread/Rest Operators
- Objects and Object Literal Syntax
- Shorthand Properties
- Property Descriptors including Getter/Setter properties
- Object API
- Object Destructuring and Spread/Rest Operators
- Object Extending, Sealing and Freezing
Classes & Prototype Inheritance
- What is Prototype Inheritance?
- Prototype Inheritance contrasted against Classical Inheritance
- Exploring Getting and Setting properties on a prototype chain
- Enumerating Properties and its Relationship to Prototype Inheritance
- Using Classes to Build Objects and Setup Prototype Inheritance
- Historical comparison to Function Constructors
- Static Properties
Asynchronous Programming
- Role of JavaScript in a Web Browser and Node.js
- What is Non-Blocking, Asynchronous Programming
- Event Loop and JavaScript Tasks
- Understanding Closures
- Role of Closures in Asynchronous Programming
- Using Callbacks and Problems with Callbacks
- Using Promises
- Overview of XHR and Fetch APIs
- Making AJAX Calls with JavaScript
- Async/Await API
Modules
- Overview of JavaScript Module Systems
- Compare/Contrast AMD, CommonJS and ES2015 Modules
- Static Nature of ES2015 Modules and Tree Shaking
- Import/Export Syntax
- Named Imports vs. Default Imports
Server-Side Programming (1 Day)
Node Projects
- The Node Package Manager
- Creating a project
- The package.json configuration file
- NPM, Yarn & Lock Files
- Global vs. Local package installation
- Semantic Versioning
- Package Upgrading
- Configuring Scripts with NPM
CommonJS and ES2015 Modules
- Modularization
- The CommonJS specifications
- Defining modules with exports
- Modules are singletons
- Creating a package
- Module scope and construction
- Objects and Classes
File System
- Synchronous vs. Asynchronous I/O
- Path and directory operations
- __dirname and __filename
- Asynchronous file reads and writes
HTTP & Express
- The HTTP protocol
- Building an HTTP server
- Rendering a response
- Using the Express Framework
- Define Routes and Building Routers
- Reading POST data
- Adding middleware
- Build a REST Server
Data Sources (minimal coverage to show how Node.js interacts with a database, not coverage on the database itself)
- How Node.js connects to databases
- Connecting Node.js to SQL Server (SQL Express, Docker, Azure)
- Performing Database Operations
Deploying Applications (general information)
- Patterns for Deploying Node.js Applications
- Installing NPM Packages for Production