I recently used both Angular 2 and React (the latter more recent) in some small projects. While I enjoyed working with React, I think Angular is more suited for me, a one-man startup.
A lot of decisions are already made and I just follow them. In React, every time I need something not built-in (which is very often), I have to do some research, and even after deciding one, I have this "what if I'm wrong" guilt at the back of my head. Of course I can "be wrong" too by choosing Angular, but at least I'm wrong for the whole stack :D
My biggest problem with Angular2 is how restrictive an obtuse the framework can be at times. I've ranted about it in other comments so I'll save space and just say that Angular makes easy things hard and difficult things nearly impossible once you step off the dotted line.
Also the lack of a really solid UI library has caused many headaches. Material isn't very configurable, PrimeNg is okay but somewhat buggy and poorly documented.
I have, but it has had datepicker as "shipping real soon now" for at least six months. Not confidence inspiring.
Wouldn't it be nice if UI components (and just as importantly, their styling) was decoupled from the JS framework they're implemented with. Some kind of markup language perhaps...
Angular its what you get when a bunch of java programmers with bad taste do what hey want. React-redux is really simple i don't understand why people have a problem understanding it. Please just make a little effort and use react. Angular is horrible and dead and if you use it some poor soul its going to have to maintain that legacy java weird mess.
>React-redux is really simple i don't understand why people have a problem understanding it.
I keep experiencing this. JS developers that should have no problem understanding redux's approach, throwing it away because they are unwilling to simply read redux's docs. It's disheartening.
Not yet. I've been burned with some JS frameworks before, so now I have the "Nobody gets fired from choosing IBM" mentality. I do hear some good reviews, maybe someday :)
> I think angular just makes more sense in larger projects.
I remember people saying exactly that with Extjs back in the days, with no proof whatsoever. Can you explain how angular makes more sense in larger projects?
> that only pays off when working in larger teams.
It always felt to me that the purpose of Angular was to give a 'large team using Java' type workflow to development, with the idea being that doing it this way you can just slot in a new angular developer when the previous one goes crazy and runs out the building screaming. But I've only worked on one Angular project, so this is a feeling on my part, not a well worked out theory of how it actually is.
I prefer having them decoupled because I can swap things out easily if I don't like them. Never touch Angular though but I imagine it should be possible to use other than the built in ones
Can you expand on this at all? I've looked at it as a replacement and I understand there are things like prop-types that are missing, but my understanding is that there are other libraries you can can use in addition to preact that give you 100% compatibility.
I've been using vue since it's conceptions (well, nearly) and it's been a joy. Initially, the templates provided the perfect path to migrate from angular 1.x. That, among other things, was the main reason I chose it over react.
Now, years later and having experience with JSX in Vue, state, and building large apps, I finally checkout out React and discovered that they're pretty much the exact same thing:
Define a component; add lifecycle hooks; add data and functions; render; done.
I think Vue's community is finally catching up and and it's exciting to see. The only thing I find myself wanting is a vue-oriented testing solution. React has Jest and I find myself sorely wanting a testing library/wrapper with good documentation for vue. React certainly has an advantage in that regard.
The article put it well: Vue if you still enjoy writing HTML templates (which I don't mind) or React if you prefer the JS orientation.
I feel like it's 20 years ago and we're seeing the golden age of RAD again. Doesn't it feel weird to anyone else that we spent so long on the web reimplementing basic visual components with spaghetti code, as if desktop UI software never existed? I suppose hindsight is 20/20.
Things are just now starting to feel maintainable and reproducible. I think it's great.
I don't think that's a fair history of the web, but that's not my point.
I am saying that the paradigm for creating a UI is not so different. I have a component with a lifecycle, events, logic, and styling, and it can be instantiated arbitrarily many times and behave predictably. That's pretty new in web tech.
As a specific example: "For decades, developers were trying to separate UI templates and inline Javascript logic, but with JSX, these are intermixed again."
This is fantastic guidance for brochure sites, but did it ever really suit application development? UI components certainly have intrinsic layout and logic, and our unbundling of that, I think, came from overzealous adherence to the "rules" of a different game.
I got into programming while angular 1.x was in its prime, and got onto the new frameworks just as they got going. I can't really discuss RAD or twenty years ago.
I do agree with the maintainable remark though. Things seem like they're slowly congealing in the frontend JS world into the new paradigms we've chosen. But I feel like this is only making way for developers to throw their weight at the backend. It wouldn't surprise me if suddenly a GraphQL competitor came out soon, igniting a new flamewar and churn in API design that we'll all have to start dealing with.
Now I can realistically build component libraries, something akin to ActiveX or Borland's VCL, and use them anywhere in the same ecosystem.
I recently saw a company with a beautiful library and workflow for react; npm i your component, import it, and off you go with a on-brand (by default) visual component. Start binding event handlers...
I would definitely not go so far as to say that. I don't have any experience with ng2+, because I was turned off by the initial complexity and monolithic style of the framework (the Front end doesn't need to be that complicated). So I can't comment on its merits.
But, having used both Vue and React, I wouldn't say that either has a clear advantage over the other. They do the same shit in similar ways. For me, it just came down to coding preferences, and the amazing documentation the Vue has. React can fill the same roles equally well.
The just is FB added a clause that if you sue them and use their stuff, you immediately lose the license. So they could counter sue for breach of contract.
One of the big reasons I avoid Ember is exactly this attitude. I have worked with people who, in a complete serious manner, think that Ember is so much better than everything else for everything. They won't STFU about it. It reminds me a lot of Rails bootcamp graduates.
Pretty interesting. I would have agreed with you a couple years ago. And I wanted to do a follow up on what I think was the most damaging issue with Ember back in 2012-2013. But you're hitting on a common topic I've heard quite frequently.
More than happy to hear more about it and get your general thoughts on the subject. Feel free to reach out.
People evangelize what works well and Ember works well. Hell, Rails works well. The thing about Ember though is that there' aren't code camps teaching it afaik.
Ember has been an "island of stability" in the front end craziness of the last 5 years. They've navigated the trends pretty well and have a complete and competitive offering.
I'm just really glad Vue is now included in every "X vs Y" framework, or "choosing a js framework", almost every article for the past two years have only been for Angular or React.
I've been building for the web for 15 years, and Aurelia feels more natural to me. Granted, my Angular projects were all in Angular 1 and it has since undergone a massive rewrite, almost as if it's a different framework now. But based on my extensive experience with web applications using Java, Ruby and Node.js on the servers (sometimes Single Page Application frontends, sometimes minimals JS with jQuery libraries, etc), Aurelia just felt more naturally web-like. That doesn't mean Angular is not able to do the job, but it feels more like using a heavier tool that doesn't belong.
Aurelia also feels easier to build with (less unnecessary boilerplate) and more maintainable in the end. The community is small but has made immense strides in a short amount of time. There is a company backing it, but a very small one, not a giant one such as Google or Facebook (and those giant ones make no guarantees, but the small one backing Aurelia has emphasized their long-term commitment time and time again). They have an ever-increasing number of community contributors and features have been added at a rapid pace. Since I began a year and a half ago, UI toolkits have regularly added Aurelia integrations. The CLI has improved by leaps and bounds.
You can find out more on their website and other blogs and articles around the web, but you may find this helpful:
also some about other alternatives. Which is a good thing, all together.
BTW, for what it is worth, I don't have stake in any of these platforms, just wanted to point a possible reason to the GP's comment "I'm just really glad Vue is now included in every "X vs Y" framework, or "choosing a js framework", almost every article for the past two years have only been for Angular or React."
It drives me crazy when I hear things like Angular4+ is better for "Large Ambitious Applications with large teams" when in reality Angular4 suffers from the same slow down/performance problems as Angular 1.x.
I mean it's like they ignored all of the lessons and knowledge the industry has learned and produced a Framework that has issues built in! But I guess the Framework was designed with consulting in mind.
One obscure issue that ends with the comment "It's slow but I don't think it's the crippling bug I first thought it was." hardly supports a claim that " Angular4 suffers from the same slow down/performance problems as Angular 1.x."
I prefer react but angular 2 and 4 are quite good. When used with ChangeDetectionStrategy.OnPush and ngrx/store, it's great to work with. String dsl based templates are annoying after jsx though, but angular's very nice mostly batteries included approach offsets this mostly. I also feel it's much harder to get hot reloading working as there is no virtual dom in angular. It can be done, it's just more complicated.
"If you love TypeScript: Angular"
I would add an "(or Vue)" to this. When I first started out with Vue a month ago, there were some weird idiosyncrasies with typescript (IMHO). But the latest updates to "vue-class-component" and "vue-property-decorator" have fixed most of them.
I don't think Google prefer either, YouTube was recently migrated to Polymer, They use Angular(Dart) from Adwords. almost all other projects use vanilla JavaScript(with closure compiler)
The Polymer philosophy appears to be more of "make everything a custom element", i.e. up to the entire app (e.g. "<youtube-app/>", "<comments-section video-id=''/>", "<related-videos video-id=''/>", etc.).
AngularJS, Angular 2+, Vue.js... all have a somewhat similar approach.
React is more of a newer paradigm, it fixes most of the problems older stacks had in a radically different way, yet elegant. This article fails to explain the different paradigms.
Also please stop "Want to use TypeScript? Go with Angular!".
React and its ecosystem has the best TypeScript experience thanks to JSX. JSX being just JavaScript, everything is checked by TypeScript like any regular JavaScript piece of code. You cannot do that with HTML templates.
I'm disappointed to see RiotJS not getting much attention lately. I've been using it for a B2B SaaS application and it has been intuitive and elegant to use, and easy to pick up for any Javascript developers.
I tried learning Angular but found it to be too monolithic, and I'm currently using React Native to develop the mobile apps. If React Native is any indicator of how React web works, I don't think it compares to RiotJS in terms of developer happiness.. i.e. React has a tougher learning curve, the code is less readable and not as concise, a lot of things feel unnecessary, whereas RiotJS is significantly more lightweight, more intuitive, and faster to get things working (from my experience)
A lot of decisions are already made and I just follow them. In React, every time I need something not built-in (which is very often), I have to do some research, and even after deciding one, I have this "what if I'm wrong" guilt at the back of my head. Of course I can "be wrong" too by choosing Angular, but at least I'm wrong for the whole stack :D