Seconding the recommendation to check out Surface! From the docs:
Surface is a server-side rendering component library that allows developers to build rich interactive user-interfaces, writing minimal custom Javascript.
Features:
* An HTML-centric templating language with built-in directives (:for, :if, ...) and syntactic sugar for attributes (inspired by Vue.js).
* Components as modules - they can be stateless, stateful, renderless or compile-time.
* Declarative properties - explicitly declare the inputs (properties and events) of each component.
* Slots - placeholders declared by a component that you can fill up with custom content.
* Contexts - allows a parent component to share data with its children without passing them as properties..
* Compile-time checking of components and their properties.
* Integration with editor/tools for warnings/errors, syntax highlighting, jump-to-definition, auto-completion (soon!) and more.