These days, I just do vanilla JS/HTML/CSS. In some cases we serve our pages using server-side rendering techniques via Blazor, so there is no tricky state synchronization game to play over the wire. But, Blazor is mostly just doing what PHP used to do for us. We aren't diving into their component/binding ecosystem any further than we need to.
Biggest advantage with a vanilla stack is that you will never get trapped on an old version of one of these things and be forced to "migrate" (i.e. "rewrite") your application each time. Vanilla also means you don't have to submit yourself to any arbitrary package manager, build toolchain, et. al. Your entire product can fit inside 1 html document that just instantly works in any browser.
I'm only a tad familiar with Vue, but it seems like you wouldn't have as many curve balls thrown at you by committing to that framework. Which makes sense with it being essentially 1 guy's project, rather than a giant like Google (who famously is not one to care for backwards compatibility)
I used the 10-step process outlined here and it was pretty straightforward: https://codecraft.tv/courses/angularjs-migration/overview/in...
There were definitely methods in the components that needed to be moved into services, but there wasn't really much rewriting per se.
FWIW the first five steps, in terms of upgrading the AngularJS app so that it used isolated components instead of nested scopes, was more time consuming than actually porting the modernized AngularJS app to Angular.
These days I use Vue or React instead.
( I've written webapps in both AngularJS and Angular)
By comparison React has provided automated code migration scripts for every breaking change and continuous to support class-based components and lifecycle events despite most of the ecosystem having moved on to function-based components and hooks. Say what you will about React, Facebook or Meta, but at least there have always been clear upgrade paths that didn't involve rewriting the entire application from scratch.
I agree, I just moved us to Angular 13 and I love every second of it.
I've worked on React projects but will take Angular any day of the week.
Obviously the batteries included nature of Angular is nice. But otherwise I felt less burdened by the amount of code I need to write and read in react.
RxJS is nice though and testing via dependency injection as long as your app isnt a horrible mess and has good decoupling.
Today we still prototype mostly with react. It’s easier to staff junior devs around and empowers them when it comes to trivial logic with cool UX.
Any large scale work, or prototypes going to prod, do so with Angular. Where we’re confident in the Sr level engineers writing that code.
It's under MIT also which is a bonus depending on your use case.
I also think it's worth pointing out that people have very different understandings of what "very big projects" are. I think you mean projects with many different people working on it, in which case I agree, but often people misinterpret these statements thinking that their 1-5 person team working on a web app is a "very big project" because they have a million users.
It's insane to me that websites need to be compiled these days. My websites mostly consist of an index.html and a code.js, and then unzipping whatever goofy template into the js, css, images folders etc. I feel like requiring a fluent understanding of the entire node ecosystem build even the simplest websites is a big enough hurdle that a lot of enthusiastic new people are just going to give up and do something else.
Angular is in active development and growing. Exciting big changes coming in 2022!"
Well, nice try I guess. Still, they do say that "Naming things" is one of the two hard problems in computer science.
For those who don't know, the other two are: Cache invalidation, and off-by-one errors.
> Those stupid developers don't realize that AngularJS and Angular2 are two completely different frameworks! Okay, I guess we need to make it now VERY CLEAR that they are different. How about AngularJS and Angular? Sounds good, right? Now it should be clear to everyone the two are different frameworks.
Switched from AngularJS directly to Vue.js after the months of confusing messaging, no regrets, Vue.js is what Angular2 should have been, in my opinion.
Just doing it piece-by-piece was a really good strategy, instead of a stop-the-world rewrite.
I was going crazy with all the files you need to have for a small project.
It's like all the horrible sides of OOP and abstraction, but on steroids.
You get ORM, a web framework, dependency injection, messaging, and a whole lot more just by including the modules you want. You can learn the basics in an afternoon of reading documentation. The major IDEs have very good plugins.
A legacy Spring app can be absolute hell, though.
That said, Angular (1.x) was the worst professional experience of my life. It was the only technology I absolutely could not learn enough to get comfortable with, despite working with it daily for over 2 years. Non-stop banging my head against my desk. That job caused real depression, burnout, health problems.
But you can get all that stuff without Spring, too. And Spring adds another layer in between you and the ORM, the web framework and the messaging framework - a layer that's heavily reflection-based and makes a ton of undocumented assumptions about how things are set up and throws cryptic error messages when those assumptions are violated.
Like any opinionated framework, it's going to make assumptions that can cause headaches, but it's mature enough that most issues I run into are a Stack Overflow away.
> It's like all the horrible sides of OOP and abstraction, but on steroids.
Can you go more into detail?
At first glance it seems "complete", but once you start building there's just so many insane edge cases that don't work well or have bugs. I also think that "integrating" RxJS was a mistake, while I get it and it's nice, it's imho too low level of an abstraction if you have many people that don't necessarily want to learn all the details (easy to shoot yourself in the foot with it), too different from anything else in JS, and too poorly integrated into angular.
And also the verbosity of everything.. was too much for me.
The initial rollout of angular 2 vs angularJS was a confusing shit show (and will bite anyone getting into angular brand new as they hit constant google results for one angular when they want the other), but the upgradability is a case study in how to do it right in my opinion. They really made it accessible for anyone to move an app over.