TodoMVC — очень вырожденный пример. Представьте, что у вас тудушки бывают нескольких типов, в зависимости от типа с ними возможны разные действия, кроме названия у них есть еще описание и due date, к тудушкам можно писать комментарии, а еще есть пользователи, которые эти тудушки создают и редактируют и пишут комменты, а еще надо фильтровать и сортировать по всяким критериям. На ванильке и на jQuery вы через месяц повеситесь такое писать, а еще и половины не будет сделано.
TodoMVC — просто пример, как на том или ином фреймворке делаются типовые операции — как связываются между собой сущности, как пробрасываются данные из моделей во вьюхи, как обрабатывается пользовательский ввод и т.д. Поэтому не надо на эти вырожденные примеры ориентироваться, как на мерило сложности/качества кода.
Если вы сомневаетесь, то вам стоит пока что придерживаться фреймворков и задаваемой ими структуры. Сделаете несколько проектов и поймете, что куда, и тогда уже сможете выбирать для каждого случая — фреймворк или набор библиотек, и как организовать, если второе.