I've recently been unfortunate enough to work on the impending migration away from AngularJS toward the new Angular. Eventually AngularJS will be officially deprecated by the Angular team once Angular 2+ overtakes its predecessor. When that happens, security vulnerabilities may keep AngularJS from being used in production apps. This means now is the time to get out!
I've recently been learning Angular with TypeScript and just want to say I really hate every single build system I've seen thus far. Nothing is simple and there are so many damn dependencies. I would like to warn you away from their introductory tutorial's build system as it is inconsistent with how most Angular apps seem to be built and it's very inflexible based on my findings. I'll be sure to write a post if I manage to find a flexible custom build system that fits my needs.
Template Language Logic
Every framework worth it's download size seems to think about templating and provide some solution. We seem more than happy to shove as much logic as possible right into whatever they make available to us. One place to go for everything involved in the creation of that view! Awesome! (or is it?)
Controller/State/Component Functions Logic
Coupling too tightly to any front end is why it's difficult to switch frameworks, versions of frameworks, or even import new libraries. Templating languages should only be used to display data and receive events. Controllers should only be used to process events and pipe processed data into the UI. Neither templating languages nor controllers should be used directly to manipulate data in a meaningful way. Anything else produces too tight of a bind.
If you're interested in learning more about modules checkout the “You Don't Know JS” Organization chapter about modules.