Супер-героический фреймворк для веб-приложений!

Почему AngularJS?

HTML отлично подходит для описания статичных документов, но спотыкается при попытке описать динамические виды в веб-приложениях. AngularJS позволяет расширить синтаксис HTML. В результате код получается выразительным, читаемым, и легко поддерживается.

Альтернативы

Другие фреймворки обходят недостатки HTML либо абстрагируясь от HTML, CSS, и/или JavaScript, либо навязывая обязательные инструменты для манипулирования DOM. Ни один из этих способов ни устраняет суть проблемы, а именно то, что HTML не предназначен для динамических приложений.

Расширяемость

AngularJS — это набор инструментов для построения фреймворка, наиболее подходящего для создания веб-приложения. Он расширяем и отлично взаимодействует с другими библиотеками. Любая особенность может быть изменена или заменена в соответствии с уникальным путем развития и потребностями вашего приложения. Читайте далее, чтобы узнать как.

Основы

Процесс разработки

Управление

Связывание данных

Связывание данных — это способ автоматического обновления вида при изменении модели, а также обновление модели при изменении вида. Удивительно, но это исключает DOM-манипуляции из списка вещей, о которых нужно беспокоиться.

Контроллер

Контроллеры добавляют поведение DOM-элементам. AngularJS позволяет описать поведение в простой форме без шаблонного обновления DOM, регистрации колбэков или сканирования изменений модели.

Ясный JavaScript

В отличие от других фреймворков, нет необходимости наследоваться от собственных типов; оборачивать модель методами доступа. Только старый добрый JavaScript. Это позволяет легко тестировать код, обслуживать, повторно использовать и опять же освободить от шаблонов.

Процесс разработки

Связь с сервером

Внешнее связывание

Внешняя связь показывает в каком месте приложения находится пользователь. Это полезно, так как пользователи смогут создавать закладки и отправлять ссылки на элементы приложения по электронной почте. Для многостраничных приложений это не проблема, но AJAX-приложения по своей природе не такие. AngularJS сочетает в себе преимущества внешнего связывания с поведением десктопного приложения.

Валидация форм

Проверка форм на стороне клиента важна, т.к. делает приложение удобнее для пользователей. AngularJS позволяет задавать правила проверки формы без необходимости писать JavaScript код. Пишешь меньше кода — пьешь больше пива.

Обмен данными

AngularJS содержит сервисы высокоуроневого XHR, что существенно упрощает код. Мы обернули XHR, чтобы предоставить исключительное управление и обещание. Обещание еще больше упростить код при обработке асинхронно-полученных данных. Это позволяет назначать свойства синхронно, тогда как получение на самом деле асинхронное.

Создание компонентов

Директивы

Директивы - это уникальная и мощная особенность, доступная только в Angular. Директивы позволяют изобретать новый HTML синтаксис, специально под конкретное приложение.

Повторное использование

Мы используем директивы для создания повторно используемых компонентов. Компонент позволяет скрыть сложную DOM-структуру, CSS и поведение. Что позволяет сфокусировать внимание, на том что приложение делает или как оно выглядит.

Локализация

Одна из важнейших особенностей серьёзного приложения - локализация. Angular содержит фильтры и директивы которые помогут сделать приложение доступным для разных языков и культур.

Locale: US

Locale: RU

Встраивание и внедрение

Встраиваемость

AngularJS превосходно работает с другими технологиями. Вы сами выбираете что использовать из AngularJS в приложении. Большинство фреймворков требуют полного контроля над всей страницей (приложением). Эта же страница состоит из нескольких AngularJS приложений встроенных в нее. Так как AngularJS не требует контроля над всей страницей, то несколько приложений могут быть запущены на одной странице без необходимости использовать iframe. Рекомендуем открыть исходный код этой страницы (view-source) и посмотреть как он выглядит.

Внедряемость

Внедрение зависимости (Dependency injection) в AngularJS позволяет декларативно описывать взаимосвязи внутри приложения. Это означает что приложение не нуждается в методе main(), который, как правило, создает беспорядок. Внедрение зависимостей является одной из ключевых особенностей AngularJS. Это означает что любой компонент, который не соответствует вашим потребностям, может быть легко заменен.

Тестируемость

AngularJS был спроектирован так, чтобы максимально облегчить тестирование. Он отделяет представление от поведения, уже имеет в комплекте mock'и, и по полной использует внедрение зависимости. Так же в AngularJS встроен движок для комплексных (end-to-end) тестов, который избавляет от множества проблем, так он знает как устроен AngularJS изнутри.