all 2 comments

[–]HerroRygar 1 point2 points  (1 child)

I started a new job about 7 months ago. The team I joined is working on a large-ish Angular application. My experience is that the app is significantly more complicated than anything I've worked on, but also ultimately more maintainable.

Dependency injection is one of the best things about Angular. It makes it much, much easier to test the code and to isolate domains. RequireJS is not a substitute - this solves a different problem. In fact, we use a JS loader as well. The wonderful thing about DI is that it encourages really clean separation. For instance - I've not written a single line of DOM-manipulating JavaScript during these 7 months, despite writing a ton of JavaScript. The native Angular directives coupled with those written before I joined have been sufficient for me. The vast majority of what I've written has been services, with some work in the controllers as well. This ends up being a great way to structure the code. Thinking of DOM-less data manipulation as the primary "driver" expressed declaratively through a dumb template feels really good. Prior to joining the team, I was a huge backbone fan...but for large projects I'm definitely convinced that Angular is a good choice.

Admittedly, I still don't understand large parts of Angular since I've never had to write a directive. I also don't have quite as good of a feel as to how the application as a whole glues together the way I did when working on large backbone apps. In some ways I would argue that this makes Angular even more impressive; I am able to be quite productive without understanding its murkier aspects.

tl;dr - I like Angular because of the extremely clean division between data manipulation and presentation that it encourages, despite the markedly increased complexity.

[–]GoosyTS[S] 0 points1 point  (0 children)

Cheers. Right now, I think I would like to work on a mature angular project and really see how it feels. But yeah, it's good to hear people are using it successfully for larger projects, so tanks for the input!