Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

For me (and I realise this won't be popular) - AngularJS is an abomination - every time google plays with front end code they make every attempt to turn it into their own language one that has as little relation as possible to the underlying code that's happening. As we all know, abstractions leak, please avoid and use one of the many other libraries that people can actually follow through and debug without having to learn Angular first.

I speak from bitter experience with a product that ended up being two months late because of the decision by a junior Seb to use Angular - I highly recommend avoiding it and learning JavaScript properly and then picking the best tools from NPM that you need.



This has less to do with Angular and more to do with Javascript's general inability to express a useful DSL for anything.

I think your ad hominem and somewhat hyperbolic complaint would be more credible if you supplied more concrete examples of how Angular caused your product to be two months late. I'm not saying you're wrong. I'm just saying that nothing in your comment actually makes your point.

My team has made very effective use of Angular and far from making us late it has saved us considerable time.

We treat Angular not as an abstraction or framework but as a toolkit for doing the following:

  * Extending the browser's built-in HTML and CSS with our own custom behaviour.

  * Two way databinding between our application data and the DOM

  * Architecting small testable / mockable components
For what it's worth, there are some angular-isms that I truly dislike. In particular, angular.module is a bug farm for early angular developers. Also, without ngmin, Angular's "provider" declarations is both noisy and error prone. The truth howerver, is that these are minor problems and are easily discovered and fixed immediately.


Extends HTML in a very very ugly way.

Impossible to progressively enhance.

It does loads of magic such as dependency injection that is completely unnecessary. Computer programs are for explaining what is happening to the next person and Angular makes this more difficult.

There are other JS frameworks that do none of this and solve your problems, I say use them instead.

Data binding in particular had a really difficult to use syntax for things like looping. Loads of different attributes that you have look up every time you need to do something in a template.

Generally people have no idea what the in built components are doing of why the infinite scrolling can't work well on mobile.

It's really hard to use a JS debugger when I've tried with Angular - maybe you have had more success than me on this?

You admit Angular comes with some problems out of the box, how are new dev teams meant to know this automatically?


every time google plays with front end code they make every attempt to turn it into their own language one that has as little relation as possible to the underlying code that's happening.

This doesn't make sense to me. AngularJS is the underlying code that is happening. Angular is a framework, not a language, it's just JavaScript and really quite simple once you wrap your head around the role of the injector, services, and service providers (whereas everyone seems to pick up modules, controllers and directives pretty quickly).

As we all know, abstractions leak, please avoid and use one of the many other libraries that people can actually follow through and debug without having to learn Angular first.

Abstractions leak, please avoid and use one of the many other libraries that also make heavy use of abstractions, the foundation of modern computing.


It's difficult to trace through Angular programs compared to say Express JS - express is a much cleaner framework than Angular which pollutes your HTML and JavaScript with lots of magic.

In the early days of Django the had a magic removal branch for this very reason; people who do not understand the framework will find it harder to learn.

This is just my experience. Maybe you are some sort of Angular savant who agrees with all the assumptions the authors made.

Haha, and your abstractions comment deliberately misses the point; of course we abstract things but you should use the simplest possible abstraction for the job. Angular is not that.


It's difficult to trace through Angular programs compared to say Express JS - express is a much cleaner framework than Angular which pollutes your HTML and JavaScript with lots of magic.

"lots of magic" and "difficult to trace compared to x" sound a lot more reasonable than claiming AngularJS is an abomination, so I'll address those claims instead. Yes, magic in programming can be dangerous, but keep in mind that magic always has a logical explanation. In this case, the magic turns out to be a pretty mundane case of metaprogramming. If a developer can't understand how it might be possible to pattern match parameter identifiers in JavaScript, then I think AngularJS DI is the least of their worries.

Maybe you are some sort of Angular savant who agrees with all the assumptions the authors made.

I'll take that as a compliment, but I'm just a regular guy who has pushed a few medium sized angular apps into production. I definitely don't agree with all of angular's design decisions, but I don't have to agree with everything to use the framework effectively.

In the early days of Django the had a magic removal branch for this very reason; people who do not understand the framework will find it harder to learn.

Contrast that anecdote with Rails, a framework that has very successfully embraced the power of magic from the start to create what is arguably the most influential web framework of the last decade. It's an opinionated approach, but not inherently wrong.

of course we abstract things but you should use the simplest possible abstraction for the job. Angular is not that.

The simplest solution isn't always the best solution, if that were the case we wouldn't be discussing client side scripting in any capacity.




Consider applying for YC's Winter 2027 batch! Applications are open till November 2.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: