For me, the better choice Vue.js regardless of size of the project. And this can be explained succintly with three simple words: Two Way Binding.
When I began using JavaScript frameworks for dynamic UI, I started with the original AngularJS. It is the original framework that elegantly implemented two-way binding in an MVVM framework, where a model is bound to an element/elements. The original implementation didn't scale as well (i.e., there is severe page performance as you add more and more two-way bindings), but this was actually mitigated (to an extent) by the introduction of one-way binding construct in v1.5.
If this feature is so great, why do some developers hate it and even calling it anti-pattern? A few reasons I could think of, actually.
- While VueJS (and the newer Angular 2.x) has addressed the performance issues plagued by two-way bindings in Angular 1.x, there is a tende