I work for the largest credit union in the state and our projects certainly classify as "enterprise." We have no problem using Vue in our applications and we've implemented it in 20+ apps so far.
I evaluated all three of the big front end frameworks and, even though I had the most experience with Vue personally, it, by far, made the most sense to our team.
Angular is complex, there's a lot of boilerplate and, while TypeScript was initially interesting to our C# devs, along with the similar structing to .NET, learning it well required more time than we were willing to put aside for it. Not only that, but we felt like it would have slowed down our development time because, while it was robust, we were writing a lot more code and code reviews themselves became more difficult.
React is awesome. Personally, I love most of its concepts and the more functional approach, but its lack of structure became difficult because there are barely any rules enforced. Sure, your organization can adopt certain patterns, but on projects where you're up against short deadlines, these are the first things to go out the window. You can always go back and refactor, but that time rarely happens for us and I hate that mindset. A lot of the code on unstructured React applications starts to look like spaghetti code from the jQuery days, which is exactly what we were trying to avoid.The functional style is also pretty foreign to our .NET guys who would have to work on the front end occasionally. Moreover, I also feel like React is, by far, the least stable of the big three. Not necessarily in up time or codebase, but more that the React team doesn't really seem to know what they want and rather than making core concepts better in new releases, choose to just release more and more new features, which is a time sink to learn.
Also - I'm not a fan of Redux and ReactRouter being community controlled projects (Yes, I realize some of the React Core Team contributes to them, but they are not Facebook projects), they're both fantastic libraries, but these are key features that are a necessity in most large applications; for the React team to not have their own implementation is strange. While React has added some features lately to remedy the reliance on Redux, that's just another thing our team would've had to learn. Moreover, the way routing is done within ReactRouter is just totally backwards to me; defining routes inside your view as components makes no sense.
Vue strikes a happy medium between structure and freedom for us. Vue, VueRouter and Vuex are all part of the core Vue ecosystem and the Single File Component structure means you can pick up working on an application anywhere and fairly easily understand what's happening. The only thing I feel needs more work in Vue is their validation packages - I'm a huge fan of the concepts of Vuelidate but they keep changing their API to the point where if I were to update older apps, they'd break. VeeValidate is a very robust package but it can add a lot of unnecessary weight if you don't need a whole lot from it. I'm also not huge on the DOM-based validation vs model-based. I like the data-driven concepts of Vue and feel like VeeValidate doesn't really adhere to those same notions. I'd also love to see immutability built into Vuex, as that's bitten me a few times in the past, where it wouldn't have been an issue in Redux, but you learn to counteract it after you make the mistake the first couple of times :D
Great overview, thanks!
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.