Salepage link: At HERE. Archive: http://archive.is/OfTRx
Mastering JavaScript Design Patterns: A Practical Introduction to Building Better Applications
A practical introduction to writing better and more maintainable code using JavaScript design patterns
![]()
A practical introduction to writing better and more maintainable code using JavaScript design patterns
About This Video
- A practical, application-oriented guide to working with JavaScript design patterns
- Build a music player application and tackle real-world challenges that appear as the application grows in complexity
- Enhance the application’s functionality and performance through writing modular, strongly organized code
- Understand how design patterns can improve the testability and maintainability of application code, and embed healthy programming practices
In Detail
As the language of the web, JavaScript is used prolifically by developers building new applications every day. However, some developers still lack the knowledge about how to write things in a simpler, clearer and more maintainable way. Design patterns are proven solutions to common development problems, and can boost code quality and application maintainability, as well as improve developer efficiency.
Mastering JavaScript Design Patterns demonstrates how to apply design patterns in real life situations, whether that’s for new, or already existing projects. It will help you to make your applications more flexible, perform better, and easier to maintain.
We’ll begin by building a simple music player application, and then we’ll build and add more and more functionality to our music player application. We’ll also cover different ways to modularize the application.
In the next two sections we’ll build a server and will load data from it. We’ll cover different techniques for caching, fallbacks, optimizing memory consumption and deferred actions.
In the last section we’ll cover code maintainability improvement techniques by using less known, yet powerful JavaScript techniques.
Course Curriculum
Introduction
- The Course Overview (3:01)
- Software Design Patterns and Antipatterns (2:44)
- JavaScript Patterns Specifics (2:51)
Starting the Project
- Bootstrapping the Project (5:30)
- Adding the Play Functionality (3:56)
- Encapsulating Information (2:43)
- Abstracting Manipulation with DOM Events and Elements (4:26)
- Creating an Adapter to Set Intervals Using Seconds (1:25)
- Using Different Ways to Match Conditions (2:29)
Modularizing the Application
- Modularizing the Application Using Namespaces (4:32)
- Modularizing the Application Using AMD and Require.js (4:10)
- Communication Between Modules (4:59)
- ES6 Modules (4:51)
Organizing the Application Through Separation of Concerns
- Decoupling the Tracks Queue from the Tracks Player (4:22)
- Treating Each Track as a Separate Component (7:20)
- Adding the PubSub Functionality to Tracks (2:24)
- Enabling Track Play and Highlighting the Active Track (4:21)
- Decoupling the Track Model from the View (3:06)
- Formatting Track Time: Two-way Data Binding (4:20)
Enhancing the Tracks Functionality and Adding Nested Tracks
- Adding a Few Types of Tracks (3:09)
- Implementing Track Removal (3:14)
- Iterating Over Tracks Using a Generator (2:45)
- Iterating Over Tracks Using an Iterator (2:50)
- Adding Nested Tracks and Displaying Them (2:45)
- Fixing the Queue to Work with Nested Tracks (4:38)
Building the Server and Loading Data from It
- Creating the Server Using Node.js (2:17)
- Returning the Tracks Queue from the Server (3:57)
- Loading Tracks from the Server (2:31)
- Replacing Callbacks with Promises (1:40)
- Binding a Function to a Custom Context (1:33)
Loading Tracks’ Additional Data
- Loading Tracks’ Additional Data from the Server (4:27)
- Caching Data Loaded from the Server (1:53)
- Checking for Track Data with a Fallback (3:07)
- Storing Common Tracks Data in Shared Objects (2:43)
Improving Code Maintainability
- Adding Different Skins for the Player Header (4:17)
- Improving Testability by Inversion of Control (1:56)
- Forcing Function Argument Types (3:02)
- Fixing Models to Support Any String as Attribute Name (3:38)