Языки:
ClojureScript. Быстро просто и удобно.
TypeScript. Если нужны типы и вы привязаны к семантике JS(В команде много JS разработчиков не готовых учить нормальные языки).
------
Ractive.JS если вам нужна типичная(живая) страничка с большим количеством зависимостей от состояния.
Плохая композабельность, однако прекрасно работает в модели серверного рендеринга(вам не придется учить новые концепты). Т.е. У вас есть шаблон(mustache). К нему применяется состояние, рендерится вьюшка.
Плохая композабельность потому-что mustache в mustache вы не вложите так-же красиво как компоненты в реакте.
-------
React. Сильно продвигаемый и довольно удобный. Если используете React, то смотрите сюда
https://react.parts/web
очень много готовых компонентов
-------
Скажем так
SPA: ClojureScript/React/TypeScript
Оживленная страничка: es6/Ractive