- PVSM.RU - https://www.pvsm.ru -
Достаточно вольный перевод заметки 7 reasons why angularJS rocks [1].
Я backend-разработчик и мир Javascript фреймворков для меня достаточно нов, хотя в последние полгода мой интерес к ним сильно растет. Причина проста: я считаю, что стек технологий REST + JSON + Rich JS все больше подходит для широкого круга веб-приложений. Такой подход помогает победить дерьмовую сомнительную концепцию MVC в серверных приложениях. Почему MVC можно считать вредным — это отдельная история, сейчас лучше поговорим об AngularJS [2].
Что в AngularJS особенного?
Что дает вам более “чистые” интерфейсы, прозрачные зависимости и держит вашу архитектуру в хорошей форме.
И это не просто бросание слов на ветер, т.к. Miško Hevery [3] является одним из ключевых разработчиков, который известен (по крайней мере, мне) своей пропагандой тестирования.
Ваши тесты не зависят от сервисов на стороне сервера. Вы можете полностью изолировать свои тесты:
$httpBackend.whenGET("http://api.example.com/data").respond({'data': 123});
Вы по максимуму используете HTML атрибуты, сохраняя тем самым сотни строчек javascript кода.
Практически мгновенные (обычно пара часов) ответы в списке рассылки [4]. Быстрые решения по pull request-ам. Ключевые разработчики открыты для обсуждений.
AngularJS действительно дружелюбен к REST. Вот так вы можете получить список коммитов репозитория на Github:
var commits = $resource('https://api.github.com/repos/:user/:project/commits').get({user: 'mkotsur', project: 'gitoscop'})
У вас есть scope-ы, изменения которых отслеживаются и модели которых могут быть привязаны к HTML элементам. Все обновления работают автомагически с помощью $scope.$watch.
Для того чтобы глубже познакомиться с Angular, я создал «игрушечное» приложение, которое использует API Github для представления интерфейса работы с последними коммитами и diff-ами выбранного репозитория. Демо: http://mkotsur.github.com/gitoscop [5], код: https://github.com/mkotsur/gitoscop [6].
Конец перевода.
Небольшое добавление для джангистов:
var module = angular.module('Cabinet', [], function ($interpolateProvider) {
$interpolateProvider.startSymbol('[[');
$interpolateProvider.endSymbol(']]');
}).
config(function($httpProvider){
$httpProvider.defaults.headers.common['X-CSRFToken'] = '{{ csrf_token }}';
});
Несколько интересных ссылок:
Автор: aav
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/6005
Ссылки в тексте:
[1] 7 reasons why angularJS rocks: http://sotomajor.org.ua/7-reasons-why-angularjs-rocks
[2] AngularJS: http://angularjs.org/
[3] Miško Hevery: http://misko.hevery.com/
[4] списке рассылки: https://groups.google.com/forum/?fromgroups#!forum/angular
[5] http://mkotsur.github.com/gitoscop: http://mkotsur.github.com/gitoscop
[6] https://github.com/mkotsur/gitoscop: https://github.com/mkotsur/gitoscop
[7] stackoverflow.com/questions/8302928/angularjs-with-django-conflicting-template-tags.: http://stackoverflow.com/questions/8302928/angularjs-with-django-conflicting-template-tags.
[8] AngularJS — Javascript MVC framework from Google: http://www.reddit.com/r/programming/comments/sk4wn/angularjs_javascript_mvc_framework_from_google/
[9] IDEA-84299 Provide IDE support for AngularJS: http://youtrack.jetbrains.com/issue/IDEA-84299?projectKey=IDEA
Нажмите здесь для печати.