Components have the same structure as the examples that we have been working with up to this moment, i.e. a template part containing HTML markup and a controller part containing the Vue app's logic.
When a new Vue component instance is created, it goes through a series of initialization steps such as data observation, template compilation, mounting data to DOM, and data updates. Through these initialization steps, Vue invokes functions - "lifecycle hooks", that give users the opportunity to add custom code at specific points of its lifecycle.
Watchers are another option in Vue as "computed" properties are. We declare watchers by adding a "watch" property inside the Object we pass inside Vue's createApp() function, then passing the names of variables we intend to watch for changes as subsequent functions names inside this property.