Mаxmaxmаximus, я уже давно использую подход, когда шаблонка генерит HTML для либы биндинга, вот например код из моего проекта (Snakeskin + Vue)
- include '../i-data/i-data' as placeholder
- template [%fileName%](params) extends ['i-data']
- block body
- super
- block button
< button.&__button :type = type | :form = form
< span.&__wrapper
< span.&__cell.&__pre-icon v-if = preIcon
< b-icon :value = preIcon
< span.&__cell.&__value
<slot></slot>
< span.&__cell.&__icon v-if = icon
/// Вызов другого компонента Vue с параметром value
< b-icon :value = icon
< span.&__cell.&__progress-bar
- wrap callBlock progress()
< b-icon :value = 'cog'
А вообще, коль уж ты удумал велосипедить, то глянул бы
https://github.com/SnakeskinTpl/Snakeskin, я уже 3 года пилю этот движок, так что многое можешь у меня подсмотреть, тем более дока на вики весьма подробна.