top | item 14580728

Will Vue.js become a giant like Angular or React?

67 points| galfarragem | 8 years ago |10clouds.com

135 comments

order
[+] petilon|8 years ago|reply
Vue.js is a step backwards, relative to React, in my opinion. What I love about React is JSX (or TSX if using TypeScript). JSX is a combination of JavaScript and HTML syntaxes. You don't need to learn a new syntax in order to incorporate loops and conditionals in the view layer, thanks to JSX: you just use JavaScript. More importantly, you get compile-time verification. If you use a JavaScript variable in JSX and someone deletes that variable you find out about this issue at compile time. This is very important for large projects that multiple developers are working on together. Angular and View.js don't have this capability and that's a very serious shortcoming for large projects.
[+] indreklasn|8 years ago|reply
I love React but you're completely wrong here. Vue has JSX support as well https://github.com/vuejs/babel-plugin-transform-vue-jsx. JSX isn't a React thing anymore. Most Virtual DOM solutions offer JSX.

Styling React components is a huge pain. What I like about Vue is the awesome styles, HTML and js in one file for each component. With React projects I have a completely seperate styles folder.

[+] tyrw|8 years ago|reply
It's hard to take anyone seriously who doesn't even spell the name of the thing they're opining on correctly. I'd venture to say you've never used Vue in a meaningful way so probably aren't qualified to make a comparison.
[+] seanwilson|8 years ago|reply
> More importantly, you get compile-time verification. If you use a JavaScript variable in JSX and someone deletes that variable you find out about this issue at compile time. This is very important for large projects that multiple developers are working on together.

I'm still amazed people argue that statically typed languages don't make you more productive compared to dynamically typed languages.

[+] amelius|8 years ago|reply
How you write the elements really isn't a very important aspect of an application. It's just convenience.
[+] doublerebel|8 years ago|reply
Jade/Pug templates (been around for years, and are the ExpressJS default) also offer the same feature of being just "a combination of JavaScript and HTML elements". I haven't been convinced yet that JSX is better, because I can do all the same things in Pug (client or server-side rendering, compile to Hyperscript, compile to Javascript) yet with cleaner syntax.
[+] unclebucknasty|8 years ago|reply
Funny to read this--talk about the benefits of strong-typing, etc. The dynamic nature of JS was once a benefit. Granted, it wasn't initially purposed for full-out browser facing SPAs, etc.

Still, strong-typing has been with us forever and, in general, I feel like we've solved this problem. I'd like to see a light-weight VM framework that supports Java code compiled down to JS, with an in-browser Swing-like component framework (no, not applets). But a lot of the tenents of async, event-driven Swing style dev (including using workers to keep i/o off the event thread), actually overlay nicely with the challenges that modern JS frameworks are attempting to solve.

I know there's not a lot of Java-love around here, but, pick any language that has modeled out this problem and has a cadre of seasoned developers. Then, rather than re-invent the wheel, just port that to the browser.

[+] evmar|8 years ago|reply
FWIW, Angular templates are also checked at compile time. (But you're not wrong about the advantages of JSX -- as you observe Angular has its own syntax for looping etc.)
[+] jankiel|8 years ago|reply
Vue does have JSX backend, so your argument is not really valid
[+] sergiotapia|8 years ago|reply
After being burned really badly by Ember and Meteor, I'm probably never going to use tools that are all-in-ones ever again.

With React I get something laser-focused, just does 1 thing well and that's it. With Vue, I have to buy into the entire ecosystem.

I don't want to experience what I did with ember and meteor ever again in my professional life. I think about all the great developers I've worked with and I looked up to, and almost all of them hated all-in-ones. I rolled my eyes when I was younger, but today it's like damn these guys had a point!

[+] abalashov|8 years ago|reply
I really don't think Vue is an all-in-one. It handles the UI side and the binding and rendering, but is otherwise the least opinionated of any framework I've seen with regard to how you structure and write the rest of your JS. It's much more like the Backbone and Underscore days, except even less opinionated and boilerplate-heavy.

Vue is the antithesis of Angular 1 in that sense. No stupid ontology of inane design patterns - no services, no providers, no factories, none of that mandatory crapola.

[+] yunyu|8 years ago|reply
Vue isn't even close to all in one, and in fact markets itself as the "progressive framework for building user interfaces":

"Unlike other monolithic frameworks, Vue is designed from the ground up to be incrementally adoptable. The core library is focused on the view layer only, and is very easy to pick up and integrate with other libraries or existing projects."

[+] MatekCopatek|8 years ago|reply
I agree with the general notion, but I fail to see how one would consider Vue an all-in-one, its feature scope and actual size in KB are much closer to small, view focused frameworks such as React.
[+] patrick_haply|8 years ago|reply
Out of curiosity, how did Ember and Meteor burn you so hard and why are you so averse to "all-in-one" tools as a result?
[+] tootie|8 years ago|reply
While react is perfectly capable of being mixed freely with vanilla js, you'll likely find that once you start down the react path and build up a library of components, it starts to make sense to do your project 100% in react.
[+] camus2|8 years ago|reply
> With Vue, I have to buy into the entire ecosystem.

Vue is really just a component framework that deals with the view, it doesn't do Ajax, it doesn't even do routing and don't force a backend or a database like Meteor.

[+] bmh_ca|8 years ago|reply
This is the philosophy behind why I went with Knockout years ago - and am now helping maintain and write version 4.

Specific, narrow focus and it's served me well. Sensing the innate liability, I've never felt the allure of the full fledged framework.

[+] scriptkiddy|8 years ago|reply
I understand where you're coming from. However, Vue isn't an "all-in-one" or "batteries included" library. Vue is just a view layer. It fills the same layer of the stack that React does.
[+] aarpmcgee|8 years ago|reply
+1, Ember especially. Never encountered a framework with so many foot-guns and poorly documented conventions for avoiding said foot-guns.
[+] ausjke|8 years ago|reply
Maybe polymer and web components are the way to go, at least that is what I'm trying to use these days.
[+] SilverSlash|8 years ago|reply
You can very easily use React + Meteor though.
[+] sotojuan|8 years ago|reply
I think there's merit on staying small-ish. Not every framework has to be a giant that dominates the industry.

Having a small community means the potential for focus and strong canonical learning resources, as opposed to the mess of poorly written React and Angular posts/"guides" we get every week. The community feels tighter and it may be easier for the maintainer(s) to manage it and the codebase.

Ember is a good example. Ember's community isn't small (sold out conferences every year), but it's not in the spotlight like React or Angular are. That doesn't mean the framework is doing poorly. If anything, their community and meetups are "better" than React's (for my definitions of a good community/meetup).

[+] tyrw|8 years ago|reply
Having used all three, it feels like Vue.js will grow to occupy the role that React occupies today. That, or React will (smartly) take on some of Vue's core features like single component files with actual HTML, CSS, and JavaScript in them. Vue is far easier to start with yet feels more powerful too. Angular 2+ is a separate animal for larger teams, so will probably remain for that use case.
[+] woah|8 years ago|reply
React components can have markup, styles and logic in one file. Seems like the only thing Vue brings to the table in this respect is yet another templating pseudolang.
[+] ausjke|8 years ago|reply
it always amazes me how one person project such as vuejs and laravel can compete against with the frameworks made by giants such as google and facebook. yes there are more developers involved in vuejs and laravel now but the two main authors are still the king to rule these two extremely popular projects, truly amazing.
[+] shaneos|8 years ago|reply
It's a bit disingenuous to say that Facebook uses Vue for Newsfeed. It's on a marketing site, not on a performance and business critical part of the site.

These marketing sites are very often built by contractors, not FB engineers, and tend to be one off efforts.

Not to knock Vue, but it weakens the message when deliberately misleading info like this is used

[+] nope123|8 years ago|reply
Nope. React has 10 people in its core team, highly compensated to work on React. There is at least one genius among those 10. Think of Fiber and how it works. VueJS may copy that model but in this sense, as in the case with JSX, they're a follower. They are not a thought leader. Just a sink/collector for React haters.
[+] scriptkiddy|8 years ago|reply
Maybe you should share your opinion with Even You at the next conference you go to and see how he takes it. Writing Vue off like this is an insult to it's creator. Evan works really hard on maintaining and improving Vue for what probably amounts to pennies on the dollar when compared with the money Facebook pumps into react.

I'm not saying that you're wrong about Vue not being a "thought-leader" or whatever, just that you really should be more appreciative of developers who release awesome libraries under OSS licensing.

That said, being a "thought-leader" is not necessary in order to make a difference. Software has been, is, and always will be an iterative process. We build upon the shoulders of giants that came before us. We take the best ideas from our predecessors and combine them to create something new and, hopefully, better. Regardless of your opinion on the philosophical aspects of Vue, you have to give credit to its creator and its community.

[+] amelius|8 years ago|reply
> Think of Fiber and how it works. VueJS may copy that model but in this sense, as in the case with JSX, they're a follower. They are not a thought leader.

Fibers only exist because sharing between Javascript threads is not currently an option.

React is a thing only because Javascript sent us back 20 years in time.

[+] julianmarq|8 years ago|reply
Yes, I will agree with you, someone who's never created anything of worth nor ever will. And I know this because you have so little agency you had to use a throwaway account to write this.
[+] ice109|8 years ago|reply
>There is at least one genius among those 10

who?

[+] k__|8 years ago|reply
I think Vue will maybe kill Ember, but not React.
[+] azr79|8 years ago|reply
I went Angular, because I can get a well paid job very easily, it's a very fun Framework to work with, TypeScript is awesome, it's complete, fast and powerful, is backed by Google and has a huge community.

Vue might be fun to work with, but it doesn't have all the advantages of Angular (or React) I listed above.

[+] Tade0|8 years ago|reply
Everything has already been said in the article, but there's one thing that makes Vue stand out the most: The author(s) are really focused on keeping this framework's API simple and getting rid of/deprecating stuff that doesn't promote productivity.
[+] AngeloAnolin|8 years ago|reply
Tried Angular, ReactJS and VueJS and to me, they have their own strengths, but all are more than capable as frameworks for building large and solid enterprise level apps. IMO, productivity and simplicity has Vue winning my preference.

Reading the article, I was surprised at this part:

"Wait, did I just write Facebook? Check Facebook’s newsfeed."

I did checked facebook's newsfeed and certainly, the Vue Devtools lit up on my Chrome browser, which detected VueJS being used on that page. Given that FB has heavily leaned on React, I wonder why they would be using Vue on one of their premiere pages? Is it because they are also trying to analyze what's being offered by Vue and integrate it with React in the future?

[+] colbyh|8 years ago|reply
for what it's worth I will say that writing components in Vue is enjoyable in the way that React was initially. the two are definitely more similar than either is to Angular, but I find Vue slightly more easy to get started with (no JSX overhead). JSX is far more powerful than simple HTML templates but I rarely find myself needing that power.
[+] dqvsra|8 years ago|reply
Facebook news feed always crashing after sometimes of scrolling on mobile devices. The whole version of mobile web Facebook looks terrible, old fashion, completely awful ui\ux. This is a result of working framework. Try to compare it with another social networks like VK.com which is extrimely stable on mobile devices (both desktop and mobile version), very fast and user friendly.
[+] enkay|8 years ago|reply
It's the best parts of Angular and React in one framework. I don't know why you'd want to use anything else.
[+] luord|8 years ago|reply
While I don't mind if Vue stays small (as in, just used enough to keep momentum), I'd love it if it became more popular. It's truly a joy to work with.

Angular was the first framework I used, and I liked working with it well enough, even if I wasn't a big fan of many of its idiosyncrasies. But then Google announced they were going in an entirely different direction so I decided to try new things.

I tried liking react (gods, I tried, many, many times) but I just can't like how the code looks when using it or the structure it ends up forming, or the boilerplate it requires.

Vue, however, feels like doing plain JS, which I actually like[1], as each component is rarely more than a few objects and functions. Well, that and html templates, which I'm fine with and would have to use anyway as a backend developer.

[1]: JS has always been my second favorite language, after python, and the new versions are just so nice to write.

[+] isaaclyman|8 years ago|reply
This is a valuable discussion to me right now. At work I've been tasked with looking into a number of front end frameworks (Angular 4, React, Vue, Aurelia and Mithril) to see if we'd like to start writing new pages and components in one of those as opposed to AngularJS which we currently use. AngularJS has a few specific pain points for our web app, a complex and (unfortunately) ambitious SPA.

I'm building a prototype of one of our actual landing pages in each framework to get a bird's-eye view of what works and what doesn't. So far I've been really impressed with Vue, but my team has a couple of objections from the outset:

1) Most mid-level developers haven't heard of or used Vue, so the pool of candidates we can hire as our company grows will be smaller if we switch from a common denominator like AngularJS to something relatively unknown like Vue. I personally love to learn new tech, but not everyone does and a "Vue developer" job posting may not get a lot of hits.

Then again, if (e.g.) 15% of devs want to use Vue and only 10% of companies use it, that's a clear advantage over 75% of devs wanting to use Angular and 80% of companies using it. I wouldn't be surprised if the numbers worked out like that.

2) Vue is kind of a one-man band, whereas Angular and React are backed by large cap companies. This is the weaker argument IMO, since there's no law stating that Google and Facebook can't run up on hard times and decide to drop support for their open source projects. And after seeing how sloppy Angular's documentation is, I've lost a lot of confidence in the "bigger is better" argument. However, in a rational universe, it may be fair to say that Vue would die more easily than Angular would.

My view on the situation is that it's better to use the right tool for the job and have less developers/support than to use the wrong tool for the job and have more developers/support. But I'm more technically-minded than business-minded, so I understand that I might need to be open to business concerns outside of my normal decision-making criteria.

I'm keeping detailed notes as I compare frameworks, so I may do a write-up when I'm done if anyone's interested. (Although the "battle of the frameworks" genre has been done to death...)

[+] amelius|8 years ago|reply
Don't forget about others, such as Preact [1]

[1] https://github.com/developit/preact

[+] lioeters|8 years ago|reply
I am a fan of this "small (and focused) is beautiful" approach, like yo-yo [0], hyperHTML [1], and numerous others.

The thing that sold me on Preact is its compatibility layer with React, which provides a kind of de facto standard API for components. One day I just replaced React with Preact, with the only difference being a happily reduced app size - and have been using it since. I don't plan to keep up with React's latest developments - I'm satisfied with the rendering performance of Preact, and want to stick to a stable API which lets me focus on actually building things with it.

I feel the same about client-side routers, the build process with Webpack, etc. - I'm fatigued of keeping up with breaking changes, and have started transitioning to smaller, individual libraries that just do their modular jobs, with minimum API surfaces that are reliable over long-term.

[0] https://github.com/maxogden/yo-yo [1] https://github.com/WebReflection/hyperHTML

[+] peter_retief|8 years ago|reply
I hope so, its really easy to use, anyway it has my vote
[+] nickthemagicman|8 years ago|reply
The only advantage React has is a huge backer..Facebook.

So large companies are more open to using it because it's less risk and has higher chance of being around in 5 years than a framework without a huge backer.

That's my theory on how 'biz' people make I.T. decisions.

[+] SilverSlash|8 years ago|reply
I've not used Vue or Angular, but I love React. It feels almost object oriented programming like - kind of like programming in Java. Correct me if I'm wrong (I'm new to web dev).
[+] davedx|8 years ago|reply
Ok I'll bite. What is the equivalent of redux-form in vue.js?
[+] mstijak|8 years ago|reply
I feel that the biggest advantage of Vue over React is that it's incrementally-adoptable. It's small and lightweight and fits nicely everywhere.

Preact offers a similar experience.