Chapter 0: Introduction
- Book 1: The Basics
- Book 2: Built-in Objects
- Book 3: Useful Snippets
- Book 4: Building Mini Apps
- Book 5: Advanced JavaScript
Chapter 1: Browser APIs (aka Web APIs)
- Introduction
- The available browser APIs list
- Ambient Light Events
- Background Tasks
- Barcode Detection API
- Battery API
- Beacon
- Bluetooth API (experimental)
- Broadcast Channel API
- CSS Counter Styles
- CSS Font Loading API (experimental)
- CSS Painting API
- CSS Typed OM API
- CSSOM (CSS Object Model)
- Canvas API
- Channel Messaging
- Clipboard API
- Console API
- Contact Picker API
- Content Index API
- Credential Management API
- DOM
- Encoding API
- Encrypted Media Extensions
- Fetch API
- File System API
- File System Access API
- Frame Timing API (Experimental)
- Fullscreen API
- Gamepad API
- Geolocation API
- HTML Drag and Drop API
- HTML Sanitizer API
- High Resolution Time
- History API
- Image Capture API
- IndexedDB
- Intersection Observer API
- Long Tasks API (Experimental)
- Media Capabilities API
- Media Capture and Streams
- Media Session API
- Media Source Extensions
- MediaStream Recording
- Navigation Timing
- Network Information API
- Page Visibility API
- Payment Request API
- Performance API
- Performance Timeline API
- Periodic Background Sync
- Permissions API
- Picture-in-Picture API
- Pointer Events
- Pointer Lock API
- Proximity Events (Experimental)
- Push API (Experimental)
- Resize Observer API
- Resource Timing API
- Screen Capture API
- Screen Wake Lock API
- Server Sent Events
- Service Workers API
- Storage
- Storage Access API
- Streams
- Touch Events
- URL API
- Vibration API
- Visual Viewport
- Web Animations
- Web Audio API
- Web Authentication API
- Web Crypto API
- Web Notifications
- Web Storage API
- Web Workers API
- WebGL
- WebRTC
- WebVR API
- WebVTT
- WebXR Device API
- Websockets API
Chapter 2: Important browser APIs in more depth
- Ambient Light Events
- Background Tasks
- Barcode detection API
- Canvas API
- Clipboard API
- Console API
- DOM API
- Fetch API
- HTML Drag and Drop API
- History API
- IndexedDB API
- Intersection Observer API
- Picture-in-picture API
- Resize Observer API
- Web Animations API
- Web Audio API
- Web GL API
- WebRTC API
Chapter 3: The DOM API in depth
- 3.1. The DOM is a tree of JS Node Objects
- 3.2. Node Object Types
- 3.3 DOM Interfaces
- 3.4. The Node hierarchy and the Document hierarchy
- 3.5 The most frequently used methods of the DOM API
- 3.6 Other interesting DOM snippets
- 3.7 How DOM extension works
- 3.8 Extending an HTML element
- 3.9 The overview of DOM interfaces
Chapter 4: Memory, memory management, and garbage collection in JavaScript
- Memory management
- Heap and stack in memory allocation
- Automatic memory allocation in JavaScript: static and dynamic allocation
- Memory life cycle in JavaScript
- References in JS
- The Garbage Collector
- JavaScript apps often use more memory then they have to
- Memory Leaks: the usual suspects
- Finding memory leaks
- Fixing memory leaks
Chapter 5: Design Patterns in JavaScript
- Characteristics of design patterns
- The Difference Between Design Patterns and Algorithms
- Different Kinds of Design Patterns
- Creational Design Patterns
- Structural Design Patterns
- Behavioral Design Patterns
- Conclusion
Chapter 6: Algorithm complexity and Big O notation in JavaScript
- An algorithm is a recipe
- Algorithm complexity: space and time
- Time complexity: a practical example
- The Big O notation
- Time complexity of built-in JavaScript methods and expressions
- An overview of time complexity with examples
- Practice: Determining time complexity of JavaScript snippets
- Some common algorithms in JavaScript
- Sock merchant algorithm
- Ransom note algorithm
- Palindrome test algorithm
- Caesar cipher
- Reverse Words
- Reverse Array in Place
- Mean Median Mode
- Two Sum
- Binary Search
- Fibonacci
- Memoized Fibonacci
- Sieve of Eratosthenes
- Bubble Sort
- Quick Sort
- Merge Sort
- Heap Sort
- Max Stock Profit
- Tower of Hanoi
- The Traveling Salesman
Chapter 7: Data structures and algorithms in JavaScript
- The importance of data structures
- Arrays
- Objects and arrays
- Linked Lists
- Stacks
- Queues and Dequeues
- Dictionaries and Hashes
- Sets
- Trees
- Graphs
Chapter 8: Advanced techniques (memoization, debouncing, throtlling, recursion, etc.)
- Memoization
- Debouncing
- Throtlling
- Recursion
- Currying
- Composition
Chapter 9: Advanced JSON
- JSON Schema
- JSON-LD
- Handling Large JSON Files
- JSON and Security Concerns
- Some additional advanced JSON concepts
Chapter 10: Functional Programming in Depth
- Why learn functional programming?
- Declarative programming
- In FP, data and functions are clearly separated
- OOP vs FP
- Higher-order functions and functions as first-class citizens
- Immutability
- Pure Functions
- Closures and Partial Application
- Functional Composition
- Recursion
Chapter 11: Webpack quick start
- 11.1 Webpack installation
- 11.2 Minimal webpack example
- 11.3 Adding minimal possible code to
index.js - 11.4 How does webpack bundle modules?
- 11.5 Tracking changes to our source code using the watch flag
- 11.6 Adding the webpack.config.js file
- 11.7 Outputting a web page using webpack
- 11.8 Outputting a custom HTML file using html-webpack-plugin
- 11.9 Adding another JavaScript module
- 11.10 Using a webpack loader to compile SCSS to CSS
- 11.11 Using Babel with webpack
- 11.12 Working with JS proposal syntax
- 11.13 Code splitting
- 11.14 webpack-merge
- 11.15 webpack-dev-server
- 11.16 webpack source maps
- 11.17 Hot module replacement
- 11.18 webpack-bundle-analyzer
Chapter 12: Understanding Babel
- Introduction
- What is Babel?
- Key Features and Benefits
- Setting Up Babel
- Babel Plugins
- Babel CLI
- Conclusion
Chapter 13: Understanding Node.js
- 13.1 Installing and setting up
- 13.2 Revisiting the Node.js ecosystem
- 13.3 Node modules
- 13.4 Writing a server
- 13.5 Streams, pipes, and stream events
- 13.6 Working with the filesystem
- 13.7 Introducing Express
- 13.8 Routing and Middleware
- 13.9 Error Handling
- 13.10 Writing a simple full-stack JavaScript app
- 13.11 Build a simple full-stack JavaScript application using Node.js, Express.js, and MongoDB
Chapter 14: Test-Driven Development
- What is TDD
- Automated tests before the code
- Why TDD?
- With TDD, it’s more likely that the code that worked yesterday, still works today
- Different kinds of tests
- A general overview of writing code the TDD way
- Unit testing in practice
- Getting started with Jest
- Writing our first test
Chapter 15: JavaScript Security
- Cross-Site Scripting (XSS)
- Cross-Site Request Forgery (CSRF)
- Security Misconfiguration
- Insecure Direct Object References (IDOR)
- JavaScript Injection
- Conclusion
Chapter 16: RxJS and observables
- 16.1 What is a stream of data?
- Reactive JavaScript
- 16.2 What kind of data can come from the observable stream?
- 16.3 Subscribing to Observables
- 16.4 Manipulating Observables
- 16.5 What is a Subject in RxJS?
- 16.6 What is a BehaviorSubject?
- 16.6.1 Other types of Subjects
- 16.7 What is a Scheduler?
- 16.8 What is an Action?
- 16.9 Conclusion
Chapter 17: Crafting Clean Code in JavaScript
- Introduction
- Understandable and Meaningful Names
- Keep Functions Small and Focused
- Avoid Side Effects
- Use Object/Array Destructuring
- Consistent Error Handling
- Use of ES6+ Features
- Conclusion
Chapter 18: Workers
- 18.1 Two major types of workers
- 18.3 Why do we need workers?
- 18.4 Worker access limitations
- 18.5 The Worker constructor
- 18.6 Communication with Workers
- 18.7 Terminating Workers
- 18.8 Error Handling
- 18.9 Service Workers and Caching
- 18.10 Conclusion
Chapter 19: Building a Progressive Web App with Vanilla JavaScript
- Step 1: Setting Up the Project
- Step 2: Creating the HTML Layout
- Step 3: Creating the Service Worker
- Step 4: Registering the Service Worker
- Step 5: Fetching Weather Data
- Step 6: Refreshing Weather Data
- Step 7: The Web App Manifest
Chapter 20: Improving Workflows in JavaScript Development
- Step 1: Setting Up ESLint
- Step 2: Integrating ESLint with VS Code
- Step 3: Setting Up Prettier
- Step 4: Integrating Prettier with VS Code and ESLint
- Step 5: Useful VS Code Extensions
- Step 6: Useful VS Code Shortcuts
- Step 7: Other Productivity Tips
Chapter 21: Chrome Dev Tools
- Introduction
- Elements Panel
- Console Panel
- Sources Panel
- Network Panel
- Performance Panel
- Memory Panel
- Security Panel
- Lighthouse
- Device Mode
- Customization and Shortcuts
- Conclusion
