Books & Videos

Table of Contents

Chapter: Introduction

The Course Overview

03m 1s

Software Design Patterns and Antipatterns

02m 44s

JavaScript Patterns Specifics

02m 51s

Chapter: Starting the Project

Bootstrapping the Project

05m 30s

Adding the Play Functionality

03m 56s

Encapsulating Information

02m 43s

Abstracting Manipulation with DOM Events and Elements

04m 26s

Creating an Adapter to Set Intervals Using Seconds

01m 25s

Using Different Ways to Match Conditions

02m 29s

Chapter: Modularizing the Application

Modularizing the Application Using Namespaces

04m 32s

Modularizing the Application Using AMD and Require.js

04m 10s

Communication Between Modules

04m 59s

ES6 Modules

04m 51s

Chapter: Organizing the Application Through Separation of Concerns

Decoupling the Tracks Queue from the Tracks Player

04m 22s

Treating Each Track as a Separate Component

07m 20s

Adding the PubSub Functionality to Tracks

02m 24s

Enabling Track Play and Highlighting the Active Track

04m 21s

Decoupling the Track Model from the View

03m 6s

Formatting Track Time: Two-way Data Binding

04m 20s

Chapter: Enhancing the Tracks Functionality and Adding Nested Tracks

Adding a Few Types of Tracks

03m 9s

Implementing Track Removal

03m 14s

Iterating Over Tracks Using a Generator

02m 45s

Iterating Over Tracks Using an Iterator

02m 50s

Adding Nested Tracks and Displaying Them

02m 45s

Fixing the Queue to Work with Nested Tracks

04m 38s

Chapter: Building the Server and Loading Data from It

Creating the Server Using Node.js

02m 17s

Returning the Tracks Queue from the Server

03m 57s

Loading Tracks from the Server

02m 31s

Replacing Callbacks with Promises

01m 40s

Binding a Function to a Custom Context

01m 33s

Chapter: Loading Tracks' Additional Data

Loading Tracks' Additional Data from the Server

04m 27s

Caching Data Loaded from the Server

01m 53s

Checking for Track Data with a Fallback

03m 7s

Storing Common Tracks Data in Shared Objects

02m 43s

Chapter: Improving Code Maintainability

Adding Different Skins for the Player Header

04m 17s

Improving Testability by Inversion of Control

01m 56s

Forcing Function Argument Types

03m 2s

Fixing Models to Support Any String as Attribute Name

03m 38s