Vue’s declarative API works great for basic examples, but can get a little messy when you have plugins and shared code. For example, suppose you want to have a common
`mounted` hook for every component for debugging purposes, but also allow individual components to have their own `mounted` hook.
With the declarative API, multiple mounted hooks is a pain. With the composition API, multiple mounted hooks is easy: calling `Vue.onMounted()` multiple times means you get multiple mounted hooks!
Does that mean that imperative is better than declarative? Absolutely not, otherwise we would all be using
javax.swing.