Продолжаю знакомство с различными MVC JS решениями. И сегодня черед Ember.JS, который во многом похож на Angular.JS и является ответвлением SproutCore.
В статье про Angular у нас был пример с формой, которая отображала результат мгновенно, как только пользователь введет что-нибудь в поле ввода.
Так вот на официальном сайте Ember.JS есть похожий пример.
<div>
<label>Name:</label>
{{input type="text" value=name placeholder="Enter your name"}}
</div>
<div class="text">
<h3>My name is {{name}} and I want to learn Ember!</h3>
</div>
Ember, как и Angular имеет двустороннее связывание. Но в отличие от последнего он не использует атрибуты html для связывания. Вместо этого используется шаблонизатор Handlebars и магия маршрутов (routes).
Говорят, что Ember – штука сложная, с высоким порогом вхождения. Похоже, что это на самом деле так. Прежде чем сделать мало мальски сносное приложения необходимо понять как работает Ember и какой объект в каком месте работает. Этому я посвящу следующую статью, а сейчас еще немного в общем.
Конечно у Ember.JS есть то, за что одностраничное приложение называется одностраничным – роутинг. При, практически, любых действиях пользователя у нас меняется URI в строке URL браузера. Этот адрес мы можем использовать для передачи кому-нибудь.
Так же как и у Ангуляра, у этого фреймворка есть средства тестирования, которые позволяют тестировать как отдельные компоненты приложения (модульное тестирование), так и группами (интеграционные тесты).
Есть свой инструмент отладки – Ember Inspector. Это плагин для FireFox и Chrome, который позволяет видеть, что происходит внутри приложения. Например, видеть какие шаблоны загружаются при определенном URI.
Встроенных инструментов для построения и валидации форм похоже нет, но есть надстройка Ember Forms, которая позволяет это делать.
Есть такой инструмент, как Ember CLI. Это консольная утилита, которая служит примерно тем же целям, что и генераторы кода в Ruby On Rails.
Есть большая библиотека дополнений для Ember.
Как видно Ember и Angular во многом похожи, но все же они разные. Сломано не мало копий в темах о том, что же лучше одно или другое. По сообщениях в этих спорах видно, что Ember более многословен и потребует больше кода при написании приложения. Angular дает больше свободы в том, как именно реализовывать задачу. Однако создается впечатление, что код Ember легче будет поддерживать, так как он более структурирован. Хотя кажется мы сейчас начнем скатываться в холивар. Интересный комментарий на Хабре со сравнением Ember и Angular. Если вдруг потонет в пучинах сети, то можно почитать копию здесь.
Если бегло говорить об Ember, то пожалуй это всё. Конечно же теперь интересно сделать небольшое, но реальное приложение на этом фреймворке. В этом нам поможет следующая статья.