React vs. Vue - OperationCode/member_content GitHub Wiki

I ended up boiling the below down into a nice Medium article.

I like both React.js and Vue.js - I don’t know if I can definitively say that I prefer one to another. Despite doing a large-scale project with each framework, and working on many smaller-scale items with React, it’s only really clear that there are advantages and disadvantages with each framework; however, if you’re in America seeking front-end employment in the states, I recommend learning React because your job prospects are greater.

*Please remind yourself that these are the opinions of junior developer, albeit one that has a serious problem in not being able to put down his keyboard and one that loves soaking up knowledge from other devs.

React

Pros Cons
One-way data binding - this fact alone makes React a much better tool for providing extensible code that many developers would work on, in my opinion… buuut one-way, immutable data binding also means that to do any sort of dynamic application, a noobie needs to be damned sure that they understand state. The moment they want to go beyond a small-scale application, they’ll also need to learn about the Life Cycle and Redux and/or MobX. I think it’s for the best, but the steep learning curve is fairly considered a con in my book.
React is easy as hell to unit test …except many developers end up using create-react-app which doesn’t encourage testing unlike the vue-cli. In other words, it’s great for testing, but I think the community and FB should do more to encourage tests.
So many different ways to implement different ideas! Everything is in JavaScript and everything transpiles, so you’re free to utilize every aspect of syntactic sugar available in all the ES specs, plus there are so many libraries and non-restrictive ways to set up projects. … and there are so many different ways to implement different ideas - how do you know what’s the right way? Is there a right way? Guides like this one are extremely helpful, but you’ve got to look carefully and think critically before jumping into too big of an idea, lest you hit an architectural pitfall or start having multiple-personality disorder in your product. Hell, you could just be starting out and then FB intimidates the shit out of you when you try to eject from create-react-app.
No pros on this one for me, it’s something I find truly detracting about React… CSS Modules, Glamorous, Styled-Components, Stylus-Loader, ReactCSS, Nano Component, CSS-in-JS, Styled System - that’s the list of different libraries (which I’ve tried to order by popularity) you can bring in to deal with stylesheets. Each of them have their pros and cons unless you’ve got a Webpack wizard in your team to set you up with a slam-dunk solution. It’s a huge frustration of mine in deciding how to bring stylesheets into a React application because you need your whole team on board with the system ahead of time and you may not even know that you’re sending your ship into a pitfall until you run into the need to render a prop-based style or dynamically pass styles with only non-store state changes. Don’t get me wrong, it’s not impossible to use styles in React, it’s just tough to do it in an extendible way that makes everybody in a team comfortable.
React’s community is huge, so huge - the biggest. You’ll never have a shortage of helpful opinions nor tutorials and examples. No con here - gotta love all the easy-access help when learning how to deal with the fun mind-fuck that is modern front-end development.

Vue

Pros Cons
Faster and lighter than React - if you care about serving up older browsers or slower internet connections - you may want to dive head-first into Vue.js No real con on this one - gzipped Vue is smaller and the Virtual DOM is faster - perhaps React Fiber will catch up or pass it?
Vue’s template syntax makes it simple to drop-in actual HTML and experiment with a Virtual DOM and/or reactive web development. It’s very noob-friendly at first. Vue’s template syntax, modifiers, attributes, directives, and other “in-template” actions make Vue crazy easy to spool up dynamic applications… It also makes it easy to run away with difficult-to-test code that can quickly look like soup to your coworkers.
This may just be a preference thing, but - in my opinion - Vue got the “single-file web development” idea right and React didn’t. JSX is a nifty idea, but the problems with stylesheets and a lack of opinionated development makes a well-defined Vue project look like water in a desert. CSS, Sass, Stylus, Less? No problem! Just drop in vue-loader. If you’re unsure of the right way to do things, don’t bring in Vue’s state management system - use the Vue API correctly. The con to this is that - as I already mentioned - it’s been professed to be tougher to test code with custom HTML attributes and directives. I’m just over here praying for Jest’s image diffing feature to work as advertised.
The only pro to counter this point is that Vue is quickly gaining popularity All my initial fanboyism of Vue.js goes out the window if you tell me to make sure the code needs to play well with other devs. There is ass-loads of research to be done into properly utilizing Vuex, making sure that your code is as extendible/readible as possible, and a complete lack of updated resources to learn about those things.

You asked for it!