Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
CSS-препроцессоры (jss/stylus/sass/css-modules)
Moved from Less to Sass. Bootstrap now compiles faster than ever thanks to Libsass, and we join an increasingly large community of Sass developers.
1) в A2.0 реактивная модель DOMЧто вы имеете ввиду? Будет то же самое что и в A1, только $digest/$apply не надо* будет вручную дергать, т.к. они все отложенные вызовы (setTimeout/setInerval/...) заврапили.
2) появляется возможность перетащить логику из шаблонов (фирменный недостаток Ангуляра и большинства движков) в JS, работая с моделью DOM в стиле React (JSX),Это откуда?, там почти так же как в А1, только парсер HTML шаблонов самописный (не стандартный).
примитивного интерактива в «уютном бложеге», типа всяких «каруселей», слайдеров, форм регистрации, корзин заказов и пр… в обычные проекты, не SPAПосмотрите на Angular Light, на нем удобно и мелкие штуки делать, эта либа похожа* на Knockout.js, но данные не нужно заворачивать в observable объекты, ну и биндинги удобней.
Просто: TypeScript, компоненты, директивы, сервисы, контроллеры, роутеры и пр. штуки
Вы получите простую форму с валидацией практически без js-кода
нет штатной библиотеки валидации, пришлось написать дополнительно 2 функции.С другой стороны, это дает больше гибкости (у каждого css-фреймворка свой стиль ошибок) и не нужно грузить лишние +6кб
Сделал вариант на Angular LightСпасибо. Наглядно. Похоже принцип работы у Angular отличается от Knockout. Попробовал сделать сброс модели из setTimeout-а, не сработало. Получается, изменения сами по себе, как в Knockout-е повсеместно не отслеживаются, и необходимо Angular как-то уведомлять о том, что модель изменилась?
С другой стороны, это дает больше гибкости (у каждого css-фреймворка свой стиль ошибок) и не нужно грузить лишние +6кбKnockout Validation это отдельная либа. Но можно и свою настрочить. А можно практически продублировать ваш пример.
Много кода нужно дописать в пример на knockout, что-бы сделать такую же подсветку ошибок?Красным border-ом? Нет, код будет практически идентичным вашему (css: { error: !data.name.isValid() }). Ну и отключить поведение по-умолчанию.
и необходимо Angular как-то уведомлять о том, что модель изменилась?Да, у этого подхода есть и плюсы и минусы. В данном случае нужно запустить .$scan() jsfiddle.net/lega911/5sd9oof7
код будет практически идентичным вашемуТогда (бессмысленный) контр пример, тут в ko кода должно выйти поболее.
$http.get('/api/data'/)
.then((response) => {
this.data = response.data
})или просто для примера так удобнее?В данном случае, просто удобнее (меньше кода).
al-value="name" писать al-value.validate="name" или al-value="name; validate" или al-value="name" al-validate="options"$validators, добавляем в него кастомную функцию-валидаторВ HTML добавляется только атрибут в input-тег.
5) добавить созданную директиву в атрибуты валидируемого поля
<input name="address" ng-model="vm.data.address" pattern="^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$"/><ip-input ng-model="vm.data.address"/>. Просто чтобы не создавать каждый раз свою директиву, которая будет по-сути алиасом, можно в старые добрые инпуты HTML добавить несколько аттрибутов, и получить немного другое поле ввода...В HTML же есть валидаторы: required для input, min/max для input[number]Я вот тоже про это хотел написать, тот же type=«number» и пр. можно назвать валидатором/модификатором. Т.е. это уже начато в HTML (в стандарте), и мне кажется, что указать «pattern/min/max» в HTML — это удобнее чем конфигурировать в коде.
Зачем это всё, скажем, для реализации слайдера или формы обратной связи?
А маршрутизация на стороне клиента так вообще заставит вас всё перевернуть вверх дном.
Насколько комфортно и вообще разумно тащить Angular2 в обычные проекты, не SPA?
При этом в нём нет всех этих страшных архитектурных штук.
Как выбрать фреймворк для frontend-разработки