Source: I maintain a complex Angular SPA since AngularJS/2.
Source: I maintain a complex Angular SPA since AngularJS/2.
I too would like to hear about what complexities you are encountering and if they are incidental or necessary complexities.
This reads like too much cool aid.
Angular is an entirely application stack, “choices made for you”. uses dependency injection out of the box, has a complex module system (eg. How you used to have import Material components one by one). It’s observables all the way down.
How can you argue that’s not complex? It’s super complex.
I mean, let’s just take an example, say, making a library… https://angular.io/guide/creating-libraries
Now let’s look at https://kit.svelte.dev/docs/packaging
Quite the difference.
I’m a modest fan of angular because it produces good stuff… but not because it’s simple or easy to learn.
You get good solid engineering outcomes with it.
I find it quite straight forward to use once you overcome the somewhat steep learning curve.
* Must maintain a deep understanding of RxJS, which is its own beast. Angular team sometimes uses it in "creative" ways that change between versions in creative ways.
* Must not go off reservation (or do) where the Angular code is committed but not covered by documentation (because reasons). Template variables (hack an ngIf into an ngVar) come to mind, as well as how not subclass an abstract component (e.g. abstract component can technically have its own template and interesting things happen when children also have their own templates).
* Must understand how Angular i18n works by inspecting various Angular code repositories (and sometimes having to build the Angular project yourself, inadvertently discovering the "wonders" of Bazel). For example, the list of Angular supported locales is generated from CLDR dumps. CLDR likes to release new dumps and so the list of Angular supported locales changes (sometimes). You can think of interview Angular questions from hell such as what is the default build locale and what happens if you change it to "en-US-POSIX"? Or, my current favorite, how to ask Angular put dir="rtl" into the generated index.html for locales that are RTL?
These are just off the top of my head. I didn't even go into various performance optimization techniques which may or may not be made redundant by the next version of Angular because of their own compiler optimizations. Also, having to make the decision of the E2E testing solution (or sticking with Protractor).