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