Анализируя какой фреймворк взять для проекта сделал небольшой сравнительный анализ AngularJS и Ember.js на основе статей, видео конференций и собственного опыта.
То что получилось кратко-тезисно:
Преимущества AngularJS
- Применение патерна Dependency Injection, что делает каждый модуль более независимым, а приложение более гибким в целом
- декларативность – использует расширенный html и не требует дополнительных модулей работы с шаблонами
- REST-дружелюбный (а в случае с restAngular – REST-ориентированный)
- намного меньше строк кода (15k < 35k)
- большое open sourse сообщество
- есть набор удобных фильтров (дата, валюта и т.д.)
- полностью покрывается юнит-тестами, возможность модульного тестирования “из коробки”
- быстрый старт
Преимущества Ember.js
- структурный подход
- четкое MVC разделение
- URL-ориентированная разработка
Недостатки AngularJS
- области видимости $scope не совсем прозрачны, отсутствие строгого контроля со стороны фремворка позволяет не опытному разработчику заложить много “мин замедленного действия”
- строго html-ориентированный
- система маршрутизации ($routeProvider) требует серьезных доработок
- отсутствует возможность отложенной загрузки модулей (lazy-loading)
- отчеты об ошибках
- монолитность, невозможность использовать компоненты отдельно
Недостатки Ember
- структура перегружена
- высокий порог входа
- app-oriented
- tests
- зависимость от шаблонизатора
Понравилась фраза разработчика Ember.js: “Сравнение в данном случае не уместно, потому что Ember.js – это фреймворк, а AngularJS – это инструмент для создания фреймворков“.
P.S.: если есть что еще добавить – пишите – с радостью дополню пост