Hacker News new | ask | show | jobs
by tegeek 4630 days ago
Client side testable code is one of the pinnacle of AngularJS.

Reuseable declarative UI's through Directives, reuseable business logic throug Services and view models (controllers) having only knowledge of views is a really good for maintainablity of a complex javascript app. AngualrJS can beat any framework out there (Backbone, Ember, etc.) when it comes to having testable & manageable code.

If your product is going to be complex, AngularJS is a no-brainer deal.

2 comments

Would you mind clarifying on how AngularJS is better than BackboneJS when it comes to having testable & manageable code? I am currently working setting up a unit testing environment with BackboneJS, it seems to be working well. What major differences exist when you test the two?

  1. DI.
  2. Clear separation of concerns.
I believe that writing testable Javascript has been possible since the name Javascript was invented. Angular.js has made it easier by doing its best to force you to write testable code.
you can use DI in backbone and clearly seperate your concerns as well. It is just not as much enforced in the framework (not opinionated)
So you agree with me.
I'm curious, is there a strong reason to chose AngularJS over other non JS frameworks. Say, Rails, Django, or one of the many other alternatives?

I realize this thread has me walking into the AngularJS den, but it is something i've been passively curious about.

Generally speaking, you'd use Angular with a backend framework.

Angular and other front-end frameworks are great for responding to user interactions extremely quickly, because often you don't have to go back to the server. And in addition when it does need to interact with the server, it is often faster to respond because it doesn't need to fetch anything but JSON data.

But that data needs to come from somewhere. And that's where Rails/Django/Play/Symphony/whatever are used.

It's a bit of an Apples-to-Oranges comparison to compare a client-side framework to server-side ones.
AngularJS is a javascript front-end framework, it has little to do with the server, you still need Rails,Django,Spring or whatever to manage your server-side application.
It's not "this or that". AngularJS is a complementary framework for client side instead of server side.

That said, AngularJS can offload a lot of server side work. Mainly rendering views and the overall presentation layer. You can basically ditch your server side templating system and make your Rails, Django, PHP or node.js a simple REST API endpoint (with some additional auth system based on cookies or smth).