liveBook · Manning

What you will learn in Build a Frontend Web Framework (From Scratch)

by Ángel Sola Orbaiceta

Chapter by chapter

Chapter 1: Are frontend frameworks magic to you?

1.1 Why build your own frontend framework? · 1.2 The framework we’ll build · 1.2.1 Features · 1.2.2 Implementation plan · 1.3 Overview of how a frontend framework works · 1.3.1 The developer’s side · 1.3.2 The browser side of an SPA · 1.3.3 The browser and server sides of an SSR application · 1.4 Summary

What you learn in chapter 1 →

Chapter 2: Vanilla JavaScript—like in the old days

2.1 The assignment: A TODOs app · 2.2 Writing the application · 2.2.1 Project setup · 2.2.2 The HTML markup · 2.2.3 The JavaScript code · 2.3 Summary

What you learn in chapter 2 →

Chapter 3: Rendering and the virtual DOM

3.1 Separating concerns: DOM manipulation vs. application logic · 3.2 The virtual DOM · 3.3 Getting ready · 3.4 Types of nodes · 3.5 Element nodes · 3.5.1 Conditional rendering: Removing null values · 3.5.2 Mapping strings to text nodes · 3.6 Text nodes · 3.7 Fragment nodes · 3.7.1 Implementing fragment nodes · 3.7.2 Testing the virtual DOM functions · 3.8 Components: The cornerstone of frontend frameworks · 3.8.1 What is a component? · 3.8.2 The virtual DOM as a function of the state · 3.8.3 Composing views: Components as children · 3.9 Summary

What you learn in chapter 3 →

Chapter 4: Mounting and destroying the virtual DOM

4.1 Mounting the virtual DOM · 4.1.1 Mounting virtual nodes into the DOM · 4.1.2 Mounting text nodes · 4.1.3 Mounting fragment nodes · 4.1.4 Mounting element nodes · 4.1.5 Adding event listeners · 4.1.6 Setting the attributes · 4.1.7 A mountDOM() example · 4.2 Destroying the DOM · 4.2.1 Destroying a text node · 4.2.2 Destroying an element · 4.2.3 Destroying a fragment · 4.3 Summary

What you learn in chapter 4 →

Chapter 5: State management and the application’s lifecycle

5.1 The state manager · 5.1.1 From JavaScript events to application domain commands · 5.1.2 The reducer functions · 5.1.3 The dispatcher · 5.1.4 Result · 5.2 Assembling the state manager into the framework · 5.2.1 The application instance · 5.2.2 The application instance’s renderer · 5.2.3 The application instance’s state manager · 5.2.4 Components dispatching commands · 5.2.5 Unmounting the application · 5.2.6 Result · 5.3 Summary

What you learn in chapter 5 →

Chapter 6: Publishing and using your framework’s first version

6.1 Building and publishing the framework · 6.2 A short example · 6.3 Refactoring the TODOs app · 6.3.1 Defining the state · 6.3.2 Defining the reducers · 6.3.3 Defining the view · 6.4 Summary

What you learn in chapter 6 →

Chapter 7: The reconciliation algorithm: Diffing virtual trees

7.1 The three key functions of the reconciliation algorithm · 7.2 Comparing two virtual DOM trees · 7.2.1 Finding the differences · 7.2.2 Applying the changes · 7.3 Changes in the rendering · 7.4 Diffing objects · 7.5 Diffing arrays · 7.6 Diffing arrays as a sequence of operations · 7.6.1 Defining the operations you can use · 7.6.2 Finding the sequence of operations: The algorithm · 7.6.3 An example by hand · 7.6.4 Implementing the algorithm · 7.7 Summary

What you learn in chapter 7 →

Chapter 8: The reconciliation algorithm: Patching the DOM

8.1 Mounting the DOM at an index · 8.1.1 The insert() function · 8.1.2 Text nodes · 8.1.3 Element nodes · 8.1.4 Fragment nodes · 8.2 Patching the DOM · 8.2.1 The reconciliation algorithm · 8.2.2 Virtual node equality · 8.2.3 Subtree change · 8.2.4 Patching text nodes · 8.2.5 Patching element nodes · 8.2.6 Patching child nodes · 8.3 Publishing the framework’s new version · 8.4 The TODOs application · 8.4.1 Inspecting the DOM tree changes · 8.4.2 Using the paint-flashing tool (Chrome only) · 8.5 Summary

What you learn in chapter 8 →

Chapter 9: Stateful components

9.1 Anatomy of a stateful component · 9.1.1 The properties of a stateful component · 9.1.2 The methods of a stateful component · 9.2 Components as classes · 9.3 Components with state · 9.3.1 Updating the state and patching the DOM · 9.3.2 Result · 9.3.3 The component’s offset · 9.3.4 Patching the DOM using the component’s offset · 9.4 Summary

What you learn in chapter 9 →

Chapter 10: Component methods

10.1 Component methods · 10.2 Binding event handlers to the component · 10.3 Mounting the DOM with a host component · 10.4 Patching the DOM with a host component · 10.5 Summary

What you learn in chapter 10 →

Chapter 11: Subcomponents: Communication via props and events

11.1 Adding components as a new virtual DOM type · 11.1.1 Updating the elements getter · 11.1.2 Mounting component virtual nodes · 11.1.3 Destroying component virtual nodes · 11.1.4 Patching component virtual nodes · 11.1.5 A rendering optimization (optional) · 11.2 Events · 11.2.1 Saving the event handlers inside the component · 11.2.2 Extracting the props and events for a component · 11.2.3 Wiring the event handlers · 11.2.4 Emitting events · 11.3 Summary

What you learn in chapter 11 →

Chapter 12: Keyed lists

12.1 The key attribute · 12.1.1 Component nodes equality · 12.1.2 Using the key attribute · 12.1.3 Removing the key attribute from the props object · 12.2 Extending the solution to element nodes · 12.3 Using the key attribute · 12.3.1 Mistake 1: Using the index as key · 12.3.2 Mistake 2: Using the same key for different elements · 12.4 The application instance · 12.5 Publishing the framework · 12.6 Summary

What you learn in chapter 12 →

Chapter 13: The component lifecycle hooks and the scheduler

13.1 The component lifecycle · 13.2 Implementing the mounted and unmounted lifecycle hooks · 13.2.1 Hooks asynchronicity · 13.2.2 Hooks execution context · 13.2.3 Dealing with asynchronicity and execution context · 13.3 The scheduler · 13.3.1 A simple solution that doesn’t quite work · 13.3.2 Tasks, microtasks, and the event loop · 13.3.3 The event loop cycle · 13.3.4 The fundamentals of the scheduler · 13.3.5 Implementing a scheduler · 13.3.6 Scheduling the lifecycle hooks execution · 13.4 Publishing version 4 of the framework · 13.5 Summary

What you learn in chapter 13 →

Chapter 14: Testing asynchronous components

14.1 Testing components with asynchronous behavior: nextTick() · 14.1.1 Testing a component with an asynchronous onMounted() hook · 14.1.2 The fundamentals behind the nextTick() function · 14.1.3 Implementing the nextTick() function · 14.2 Publishing version 4.1 of the framework · 14.3 Where to go from here · 14.4 Summary

What you learn in chapter 14 →

Concepts explained in this book

These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.