So I wrote a piece about learning React as an Angular developer, and now I’d like to take a look at Vue.
Vue feels more “natural” to me than React did, with its templates and bindings rather than the oddity of JSX. Yes, I know you can use JSX with Vue, but for my experiments I went with regular templates. I also used the class-based variant of Vue with TypeScript since I’m used to TS from Angular and have really come to love and rely on having typings in my JS.
Vue’s bindings feel reminiscent of AngularJS, and for good reason since IIRC Vue was written by some of the core AngularJS team members. This isn’t a good or bad thing to me, if they work and get the job done, then that works for me. I do like how Angular’s inputs/outputs are a bit more explicit than Vue, I was constantly having to look up how to pass data and actions back and forth with Vue. It didn’t feel as natural as it does with Angular. Of course, I’m biased since I work with Angular every day and might feel differently if my job included Vue.
I do really like how Vue combines templates and the backing JavaScript in one file, along with CSS for a particular component. Angular can do this as well, but it doesn’t feel as straightforward and editor support isn’t as complete as it is for Vue’s way of doing things. TypeScript support is also pretty good for Vue, with the exception of some libraries (I’m looking at you, Vue Material).
Overall I prefer Vue to React, and given the choice of what to start a new project with, I’d be hard pressed to pick between Vue and Angular. I’d probably go with Vue, but for intangible reasons over any technical ones. I like Vue. It sparks joy. It’s kinda like my relationship with Ruby/Rails, aside from the technical aspects of what the language and framework can give you, I enjoy working with them. The same goes for Vue. Angular is more an acquired taste and it’s a very powerful and capable framework, especially for large teams, but it doesn’t have that same playful soulfulness that Vue does.