Когда стоит использовать js фреймворки?
Когда между элементами интерфейса много сложных взаимосвязей.
Если веб-интерфейс можно разделить на простые слабосвязанные кирпичи по типу "нажал кнопку - панелька развернулась, нажал ещё раз - свернулась, и ей чихать, что творится во всех прочих элементах" - фреймворк не нужен.
Если же между ними есть связи в духе "если я нажал эту кнопку, то нужно посмотреть состояние того чекбокса и если он true, то сделать A и B, если false, то X, Y и Z, а потом ещё в соседнем списке что-то отфильтровать и по результатам, возможно, некоторые элементы задизейблить" - никуда не денешься. С ростом количества таких связей объем кода и всяческих проверок растёт экспоненциально, всё запутывается в гордиев узел.
Хорошо сказал iBird Rose 
1. Добавлю, что я использую для реализации SPA includeHTML-фреймворк, который написан на чистом JS и не требует jquery и других.
С includeHTML наипростейший вариант сделать на SPA мультистраничное приложение.
2. Также, есть подборка на сайте javascript.ru самых необходимых функций (чистый js): здесь.
3. И нативные замены без jquery (чистый js): youmightnotneedjquery.com