Enough free translation of the note
7 reasons why angularJS rocks .

I am a backend developer and the world of Javascript frameworks is fairly new for me, although in the last six months my interest in them has grown strongly. The reason is simple: I believe that the REST + JSON + Rich JS technology stack is increasingly suitable for a wide range of web applications. This approach helps to defeat the
shitty dubious MVC concept in server applications. Why MVC can be considered harmful is a separate story, now it's better to talk about
AngularJS .
What is special about AngularJS?
Dependency injection in standard delivery
Which gives you more “clean” interfaces, transparent dependencies and keeps your architecture in good shape.
')
Unit Testing Options in Standard Delivery
And this is not just throwing words to the wind, because
Miško Hevery is one of the key developers who is known (at least to me) for its propaganda testing.
e2e tests make it easy to get inquiries
Your tests do not depend on server-side services. You can completely isolate your tests:
$httpBackend.whenGET("http://api.example.com/data").respond({'data': 123});
Declarativity
You are using HTML attributes to the maximum, thereby saving hundreds of lines of javascript code.
Excellent open source community
Almost instant (usually a couple of hours) answers on
the mailing list . Quick decisions on pull request. Key developers are open to discussion.
REST friendly
AngularJS is really REST friendly. This is how you can get a list of commits of the repository on Github:
var commits = $resource('https://api.github.com/repos/:user/:project/commits').get({user: 'mkotsur', project: 'gitoscop'})
Scopes, bindings and watches
You have scope that changes are tracked and whose models can be bound to HTML elements. All updates work automagically using $ scope. $ Watch.
In order to learn more about Angular, I created a “toy” application that uses the Github API to present the interface for working with the latest commits and diffs of the selected repository. Demo:
http://mkotsur.github.com/gitoscop , code:
https://github.com/mkotsur/gitoscop .
The end of the translation.
A small addition for jungists:
- conflict template tags - stackoverflow.com/questions/8302928/angularjs-with-django-conflicting-template-tags . The upper answer is for 0.9.x, the second answer is for 1.0.x.
- For csrf, I now use something like this:
var module = angular.module('Cabinet', [], function ($interpolateProvider) { $interpolateProvider.startSymbol('[['); $interpolateProvider.endSymbol(']]'); }). config(function($httpProvider){ $httpProvider.defaults.headers.common['X-CSRFToken'] = '{{ csrf_token }}'; });
Some interesting links: