For the last few months, I have been tinkering with AngularJS, Google’s javascript framework for web applications. Perhaps the best chart I have seen to sum up my feelings about Angular was a chart Ben Nadel posted on his blog:
I am probably somewhere in the bottom left of that chart – but overall its pretty cool. AngularJS is the first client site web library that I have used that feels like a framework – JQuery feels like just a bunch of utilities to be used (or misused) at your leisure. AngularJS requires you to think like Angular, and thus conform to the framework.
I am primarily a server side web developer – with a long disdain for javascript development. But I have to admit it doesn’t make sense to have the webserver always bind html templates with data and send it pre-rendered to the web browser. Perhaps the client server vision from the 1980’s (when the argument was to offload processing from the mainframe) never died in me, and that servers should just send data to the client and let a fat client assemble the webpage.
So I have forgone refining my knowedge of Razor, and at this point plan to focus on assembling more templates on the client. That’s what led me to AngularJS.
As the chart above shows, there are times where Angular has you ripping your hair out. And there are several posts out there (see this and this) discussing valid points about problems with Angular. But I plan to approach this in moderation. Most of the issues I see out there is using Angular to build Single Page Applications – going whole hog into a client-centric app. For me its way to early to go there, but using AngularJS as the basis for generating data lists and basic input forms – I think that’s ready for primetime.
Angular makes it very easy to bind on the client data pulled from the server, and building forms using Angular is the way to go once you kind of get past some of the hurdles. I am treating AngularJS kind of like Microsoft Access – as long as you follow the rules you can build really quick apps – but if you try to get fancy that’s when the hair pulling begins. I recall in the 90’s many of the Microsoft Access tips involved calling Windows API’s to do certain thing – and to me that was a sign that your solution was probably wrong or you should switch applications. That’s how I feel about Angular – as soon as I have to start writing fancy or nested directives – its back to the server and the warm fuzziness of Razor.
Rumor has it lots of changes are coming in AngularJS 2.0, another reason not to get to fancy with it. But if you are building simple web CRUD applications, start tinkering with AngularJS.