Dabbling in AngularJS

I got the opportunity to do some work on the front end recently. It’s my first exposure to AngularJS and it’s been a great experience. I’ve never been a big fan of JavaScript in general but this seems to be a great way to work with it. Angular is a highly opinionated framework; it specifies how to lay out the application, the patterns you should use to decompose the visual elements, the layering for calls into the backend, etc. It gives you a lot of tools for all of this: two-way data binding, dependency injection, tools for working concurrently, and testable abstractions for making remote calls.

The limitations are quite freeing since they guide you to a style that produces lots of loosely coupled small modules that are testable. The testing plus the compilation step gives a lot of confidence that the system will work when deployed. I haven’t been making any significant changes on the front end, but I feel like if I needed to set up a new project I would go with a similar stack to what we’ve got going here. I feel like I’d be happier with TypeScript since that more closely matches how I think about code. In my understanding it provides for better development environment integration than what I’ve been able to get with JavaScript so far.

The documentation has been some of the best I’ve seen so far for a framework. Each piece is described independently and there are examples of how they layer together with other. There are plenty of examples that work there in the browser, since it is all JavaScript . Even better, it all links to Plunker, which lets you edit the examples right there in your browser so you can play with it and see what happens. There have been a couple of places where the documentation has failed me. The documentation regarding promises and $q falls into the classic trap of making sense if you already understand what it is trying to tell you but is almost worthless when you don’t know what it means.

I’m still having issues with the modern toolchain for front end development. Fortunately my teammates who have are more experienced with this have gotten angular, gulp, phantomjs node, npm, bower, jasmine, and who knows what else setup. This means I can just hang new pieces onto the existing infrastructure without needing to know how to bootstrap the entire stack, which is good for getting started with it. This toolchain is complex and I’m not sure how much I need to know about each of them.

This is definitely better than my previous front end experiences, although front end work still isn’t something that I want to do lots of. Finding a tool set that I like better will make it easier to do when it does come across my plate in the future.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s