Though there are lots of other bits and pieces involved in storefront development, JS components make for the most challenging part of it. Understanding how to write new components, as well as how to override or bypass existing ones is an essential skill for any Magento developer, be it backend or frontend. Admittedly, this chapter took more of a backend/module-developer type of an approach on the subject.
Whenever there is a need to change the behavior of the underlying component, whether it is pure JS, a jQuery widget, or UI/KnockoutJS, we should consider the scope of changes in order to decide whether we should approach it by replacing, overriding, or using mixin.
Moving forward, we are going to take a look at some of the neat things we can do around customizing the storefront catalog behavior, most of which come down to plugins and JS components.