Бля пасоны это пиздец) посмотрел я на API этого говна рассеялся, какое то уродство какие то непонятности, в юи все просто, есть всего 2 сущности, компонент и контроллер. Компонент это какой то кастомный элемент или атрибут который че-то делает (директивы ангуляра, ага). а контроллер это снглтон который виден во всей системе (сервисы ангуляра, ага).
И все. И используя эти 2 элементарных сущности описывается весь сайт и все взаимодействие компонентов. (кстати есть api для добавления новых сущностей, например так я добавил сущность "фильтр" и она везде сразу заработала ^^, так что сущностей не 2 а 3, но фильтры это как бонус так что не считается)
Контроллеры синглтоны и видны везде:
ui.controller('User', function(){
this.qq = 11
this.plus = function(){ this.qq ++ }
})
<head>
<title>{{User.qq}}</title>
</head>
<body>
<span on-click='User.plus()'>{{User.qq}}</span>
</body>
А компоненты имеют изолированный скоуп, изолированный shadow dom. Так же они могут наследовать друг от друга. Функция Class не канула в небытие ^^
Короче ui лучше ангуляра тем что:
1) она на столько быстра что уже упирается производительностью в браузер.
2) она на столько оптимизирована что имеет ассинхронную функцию $compile которая при компиляции и линковке возвращает промис))))) и во время компиляции илинковки не тормозит интерфейс.
3) {{дата_бинды}} при обновлении смотрят, если они видны на экране то перерисовываются, если нет то перерисовываются в ассинхронном режиме который 16 миллисекунд рендерит, потом если лемнет не виден на экране, делает троттлится на 70 миллисекунд чтобы интерфейс не тормозить, а потом снова 16 миллисекунд рендерит. ТО есть по сути все бинды происходят ТУПО МГНОВЕННО)!! С точки зрения пользователя)
4) используется Object.observe и Array.observe и их полифилы))))))
5) мегабыстрый data-repeat который МГНОВЕННО итерирует аж по ляму эллементов (да да, рисуются только те что на экране)
6) наследование компонентов друг от друга и наследование их контроллеров с возможносьтю перккрытия и обращения к родителдьским методам через this.super()
7) shadow dom в компонентах
8) Контроллеры могут наследовать друг от друга
9) Обьект ResourseList который можно итерировать репитером, и который представляет собой по сути виртуальную таблицу базы данных с сервера)
10) Обьект Resourse который представляет собой по сути виртуальную сущность на сервере. Работаем с ним а он сам на сервак запросы дает ассинхронно синхронизируя все). ResourseList кстати представляет собой "массив" обьектов типа Resourse.
11) Оьбект SessionServer который может запускать сервер обслуживающий несколько вкладок одного сайта. Ну то есть мы описываем этот сервер и если откроем 10 вкладок нашего сайта то сервер запустится только на одной, и будет остальным вкладкам только данные раздавать. Так мы можем например на всех вкладках кроме текущей музыку выключить. Или например сервером сессий запрашивать какие то данные с сервера нашего и раздавать их остальным вкладкам ^^. Или внутри сервера можем расшаривать какие-то контроллеры. Я вот думаю сделать возможность мультивкладочных контроллеров. Которые работали бы поверх СессионСервера. Ну типа User в одной вкладке изменили, он в другой повторил изменения ^^
еще около 15 фитч которые пока в секрете) включая пиздатый переводчик интерфейсов на разные языки прямо в браузере с сохранением языковых пакетов ^^, просто в консоли пишем ui.translate() и у нас появляются на сайте попапы и разные тулсы, мы там тыкаем на элементы нашего сайта, редактируем в них текст. Настраиваем стили возможно. (При чем при этом интерфейс продолжает работать, можем вызвать попап, переименовать в нем заголовок, и закрыть попап). И можем сохранить это все в JSON языковой пакет. И подключив его у нас применится этот язык.
В общем ребят я тут хуи не пинаю) это будет МЕГА ЭПИК! И я уже ПОЧТИ закончил!