This has been by far the longest and most complex chapter yet, and we've covered an awful lot of ground. Let's have a quick recap before moving on to building a shopping cart.
We started out by installing and configuring some additional dependencies in order to add some styles to the existing application. We also looked at the difference between fetching data before and after navigation occurs, before refactoring our current pages to pre-fetch their data. To round off the UX improvements, we added a page-level loading indicator between page changes, as well as a nice fade transition to make things smoother.
We then dropped back to the server side of the application and extended our existing data model to include a number of additional entities and model properties to support our needs of filtering and sorting the product list. We also created a whole load of...