add vue.js component pattern