52 up and 17 down, posted by xat 660 days ago 20 comments
I feel the author is missing several points about Angular, and Angular 2 in general.
As a premise, I too feel Angular 2 is somewhat over-engineered, the template syntax is pretty much WTF and it's easily misused. Not to mention the docs are indeed pretty poor.
Other points are quite off, though. Wrapping native APIs is something meant for dependency injection, to make testing your components easier. It's not the result of NIH syndrome.
That being said, I feel we're going to abandon frameworks like Angular soon: they feel too much like a kitchen sink for web development. Better starting with a skeleton like React and adding libraries for what you need.
Also Vue is indeed great.
I've done a couple of ng2 apps, and I think I could do more with it... that said, I still feel that React + Redux + redux-thunk and fetch gets you most of the way there, with material-ui or react-bootstrap being a great starting point... yeah the tooling isn't as flushed out, and there's some boilerplate... that said, jumping into an app is so much easier than ng2. (and imho ng1 as well).
I've talked a few people out of going with ng2 for new projects... it just isn't worth the trouble.
As for DI (from gp), what's wrong with require/import and testing using proxyquire?
That's your personal experience and personal experience depends on person and project. I had more than 3 months to work with pretty big ng1 codebase and I'm still unable to wrap my head around all these "@", ">", "=" and all ng1 cryptic syntax for property-binding.
At the same time I dived into ng2 easily (with prior RxJS and TS experience, though) w/o any guidance. Much easier than e.g. Ember.
Of course, ReactJS was even easier than ng2, but for any big app you'll need redux, redux-thunk, redux-middleware and all other bells and whistles, which makes actually learning ReactJS.
And after several years, saying I program in React will not mean anything, because do you use flux-saga (not a real thing, probably) or redux-thunk? And with Angular2+ there will be only one type.
Ng2 might never reach popularity of React, but it will have its niche in Enterprise world.
I can't agree on your opinion that knowledge about react and redux will become meaningless in the future. The key point about redux is, you don't have to learn yet another framework specific api. It's based purely on functional programming principles, so if you wrap your head about them once, you can build apps without any magic going on under the hood.
Learning about FP was extremely valuable for my career and made me for sure a better programmer too.
RIP Angular 2
rip in peace
<speculation> Angular 1, while having its fair share of oddities and complexities and frustrations, is able to provide a measure of fun in how you work with the web. Without much ceremony and overhead, you can make something cool in relatively short time.
The reaction to Angular 2 within the development community has been more mixed than the reaction to Angular 1. Maybe this is because Angular 2 takes a lot of the fun out of web development. The concept count is way higher, the template syntax looks nasty compared to Angular 1, the project now seems to cater to architecture astronauts, etc.
Combine this with how parts of the tech ed community have a vested interest in making it seem you need to use Angular 2 (maybe they have a fee-based course or are promoting one thing or another). Yet what is the sweet spot for Angular 2? Does everything you do on the web now have to be in Angular 2? Do even most line-of-business projects have to be in Angular 2? You won't find as much discussion along these lines.
So maybe when an inflammatory headline like "Angular 2 is terrible" comes along, there are many who may have a lot of sympathy with that viewpoint, regardless of the merits of the content below the headline.
Exactly. I found the article content to be technically low and sometimes incorrect, yet I can't help but upvoting this because I totally share the feeling of dispair and distress of the author.
I work on a large Angular 2 project for a year now and the development has been chaotic compared to my previous experiences with Angular 1. At the time, we decided to go with ES6 instead of TypeScript as the Angular team made this promise that we could have the choice of the language. The truth is, there is no documentation and tooling for non-Typescript users and migrating from ES6 to TypeScript on big projects is much more complicated than expected.
Currently we have major issues such as the bundle size (1.7 megabyte only for angular and related dependencies) and render performance in our views (fixed by changing ChangeDetectionStrategy and manually updating the view, which makes angular zones mechanism almost pointless). Debugging is also terrible since angular and zone call stacks are hiding all the valuable information in the exceptions.
Today I bitterly regret this choice and would not recommend Angular 2 to anyone. I worked with dozens of JS frameworks in the past but none of them has leaved me to such a state of mind of frustration and discouragement. I know it sounds like whining and my testimony may not be very constructive but it needed to be told. Angular 2 is terrible.
One of my experiences was pretty similar... I've been happy with React (w/ redux/thunks/fetch), and would recommend it whole heartedly over ng2... as a migration, ng1 to ng2 is even more painful than a planned rewrite path.
Most of my biggest complaints on ng2 have been addressed (although after rc1), and even then, it just feels weird in a day when we have a lot of tooling around npm, the stuff baked into ng2 just feels like too much, and too difficult to really use.
I guess the important point is the title. It should had been: I don't like Angular 2.
Which would have put things in perspective...
When evaluating a technology we should understand that our skills and subjective opinion also play an important role.
I think we should avoid this type of articles as it serves little to the Web progress or keeping constructive discussions.
I agree that the documentation is terrible; logic in the templates is an awful design choice and many other of his points resonated with me.
So I do think the article serves the community by addressing issues that developers encounter.
> beta libraries (Rx.js 5.0).
fixed => in 2.3.0
> I spent hours forcing Observables to behave before giving up using Observable.prototype.toPromise to transform the Observable back to a Promise and simply using Promise.all, which works much better than anything Rx.js offers.
why He spent hours ?
> Promise.all, which works much better than anything Rx.js offers.
Yes thx for that! its great to modular your shit easy to add easy to remove.
> Terrible Documentation
100% sure please Angular Team move your Ass
But Here my Comment: the NgModule fuckup is horrible i don`t know which dude have the idea but its dumb, it feels like a php framework from the 90`s!!!
Better make that title "Angular 4".
Angular 2+ is brilliant software by brilliant people. Except that the development experience might be terrible (for some, for a period of time, etc.) And it shouldn't be called "Angular".
Mostly whines from a person who worked with angular 2 for 2 weeks and doesn't even know that SystemJS is the STANDARD way to load js.
Can you link to the standard it's specified in?
Built to the format ES6-specified loader API from [ES6 Specification Draft Rev 27, Section 15](1), and will be updated to the [WhatWG loader API](2) as soon as it can be considered stable for implementation.
Just in case: Yes, this is *draft*. But the point in article is the following: "We need to learn something new, which is specific to Angular and isn't used elsewhere" and that's plain wrong.
From official angular-cli repository : https://github.com/angular/angular-cli#webpack-update
"We changed the build system between beta.10 and beta.14, from SystemJS to Webpack."
this seems related?