preface

 

In 2007, when I began programming web applications, popular frameworks such as Vue, React, Svelte, and Angular didn’t exist, and Node JS was a few years from its debut. To make a web application interactive back then, you had to attach event listeners to HTML elements manually and update the Document Object Model (DOM) through code. This approach often felt repetitive and cumbersome. Fortunately, innovators, including Miško Hevery at Google, recognized the need for a more efficient solution and introduced AngularJS, a groundbreaking framework designed to liberate developers from direct DOM manipulation. Around the same time, frameworks such as Backbone.js and Knockout emerged. In the years that followed, we witnessed the rise of Ember, Elm, and React, marking the beginning of a flourishing era in the world of web development frameworks.

It’s 2023 at the time of this writing, and we still see new and innovative frameworks being released. Such is the example of Qwik, also made possible by Miško Hevery. (What a legend!)

My first encounter with Angular left me utterly astounded. I marveled at how, when the data within a component changed, the framework effortlessly updated the corresponding HTML. The speed at which this process occurred was nothing short of magical. It wasn’t until I delved into Vue a few years later, however, that I felt burning curiosity to comprehend the mechanics behind this sorcery.