Moving to Angular2 from 1.x is a Challenge at Best
I have build several production web application using Angular 1, and for the most part I am happy with them. My biggest issue with Angular 1 was the overlap of code needed for the backend and the front-end. For small apps it isn’t a big deal, but for larger apps it can get out of hand and very hard to maintain.
I’ve been recently in a bit of a stalemate as far as where to go from here. The options I see are….
- Angular 2 — Might seem like the logical choice, but so much has changed, and there are several things that prohibit me from making this jump. 1) I don’t want to learn Typescript. 2) You can really only use Angular 2 for Single Page Application, and 3) The magic from Angular 1 is all but lost.
- Angular 1.x— If it ain’t broke then don’t fix it. Many of the performance issue with Angular 1.x have been sorted out, which makes it very capable for large apps like Google Fonts is doing and smaller apps too. Plus you can use the component paradigm that ng2 brought about without having to sacrifice your codebase. But it feels like holding onto the past staying on a release 1 when a release 2 exists.
- ReactJS — Which is booming right now, and I have enjoyed dabbling with but have not had that aha moment like Angular 1 provided. I like that I can use it for a simple component on a server rendered page or for a Single Page App. I will definitely be delving more into React, but I don’t know how much I’ll incorporate into production apps.
- NoFramework — Since my backend is usually Ruby on Rails, I’ve been having some success just going back to server rendered pages, Turbolinks, and UJS. It feels hackie sometimes in the code, but the browser experience is like that of a SPA without the drawbacks of duplicative code. My website hosting app is using this method https://rethinkwebdesign.com
I think that ReactJS will end up being the direction I go in, but for right now I am in limbo and its kinda killing me, but that is just a first world problem I can deal with for the time being.