Angular Light 0.6

    Angular Light — это самостоятельный клиентский MV(C/VM) фреймворк, который построен на идеях Angular.js и Knockout.js, и похож на упрощенный Angular.js

    Основные изменения за последнее время:
    • Поддержка «совеременных» браузеров без зависимостей (12kb): Google Chrome, Firefox, IE9+ (для IE8 нужен jQuery)
    • Сделан модуль анимации, можно использовать CSS от Angular.js 1.2+
    • Одноразовый биндинг — после получения первых данных $watch удаляется, для этого нужно дописать "::" в начало, например {{::variable}} вместо {{variable}}.
    • Сохранение результирующего списка в директиве al-repeat, после применения фильтра исходный список может изменится и иногда нужно получить результат, например для определения кол-ва элементов или для вывода «список пуст». Использовать можно так: al-repeat="item in list | filter store to variable", пример.
    • Появился «track by» для директивы al-repeat — способ идентификации элементов в списке, работает по аналогии ng-repeat из Angular.js
    • Теги для al-app, позволяют делать биндинг разных частей DOM к одному scope. Бывает полезным когда на странице используется несколько разных фреймворков и не желательно «захватывать» весь документ, с помощью тегов приложение можно «раскидать» в разные места, пример.
    • В ф-ии $watch появилось событие $finishBinding, оно срабатывает после того как произойдет биндинг. Это можно использовать в место timeout в директивах (или контроллерах :) ).
    • Появилась возможность в любой момент сделать текстовую директиву статической с помощью env.finally()

    Так же произведены оптимизации разных частей фреймворка, он потихоньку покрывается тестами — уже более 250 проверок, на данный момент фреймворк успешно используется в бою уже год.

    Предыдущие статьи:
    Поделиться публикацией
    Комментарии 15
      +3
      В чем его основное отличие от полного Angular?
        +2
        На сайте же есть: angularlight.org/doc/advantages.html

        — Angular Light easier than Angular.js
        — No excess details like dependency Injection, services…
        — If you use jQuery, then aLight can be more convenient than Angular.js
        — Easy making directives
        — Inheritance of directives
        — An able to control a declarative data binding in the HTML, text-directives
          +2
          >> If you use jQuery, then aLight can be more convenient than Angular.js

          Какое-то довольно странное преимущество. Вроде как мы хотим всеми силами сбежать с императивщины, а тут говорят «No problem, use jQuery».
            +4
            jQuery можно использовать по разному, я часто слышал рекомендацию не использовать jQuery, хотя она во всю используется, например в популярной библиотеке angular-ui, да что там, jQuery используется даже на оф. сайте angular.js
            Да и зачем отказываться от такой богатой «коллекции» полезных библиотек. Такие компоненты как datepicker и select2 у меня попадают чуть ли не в каждый проект.
            Я считаю, что если «применять голову», то с jQuery можно получить профит (не навредив).
              –2
              >> хотя она во всю используется, например в популярной библиотеке angular-ui

              На сайте angular-bootstrap (который входит в angular-ui) прямо написано, что jQuery и BootstrapJS не требуется. Т.о. уж по крайней мере datepicker обходится без jQuery.

              >> у меня попадают чуть ли не в каждый проект.

              На моем последнем проекте нет ни jQuery, ни Bootstrap. Доволен как слон.

              >> Я считаю, что если «применять голову», то с jQuery можно получить профит (не навредив).

              Если есть jQuery всегда есть желание сделать что-то по-старому на jQuery =)
              С появлением декларативных фреймворков jQuery — это уже deprecated. Логика вся делается с декларативным подходом и проще, и понятнее, и поддерживаемее. По сути для jQuery осталась только ниша визуальных эффектов. Которая со временем должна будет переместиться в область применения CSS. Да и уже есть всякие клевые штуки типа ng-animate. По мне так, если можно не использовать jQuery, то нужно уже сейчас это начинать делать.
                +2
                А я за процедурный подход. Если у вас много логики отображения то декларативный подход всё только усложняет.
                Всему своё место и назначение, а то что происходит вокруг Angular больше на моду похоже. ИМХО
          +1
          В Angular Light из Angular.js взяты самые необходимые вещи: директивы, 2-х сторонее связывание, scope, оставив «за бортом» модули, сервисы, провайдеры и т.п. Это позволяет строить свою архитектуру приложения, более простое встраивание в готовые приложения (что приближает Angular Light к библиотеке), а кому-то они просто не нравятся, так же, меньше компонентов фреймворка которые нужно изучать — более низкий порог входа.
          Директивы (в минимальном варианте) — это просто ф-ии вызываемые в момент биндинга куда передается элемент (немного похоже на биндинги в Knockout.js), что позволяет делать директивы без глубокого вникания в фреймворк.
          Тут описаны некоторые отличия.

          Если сравнивать техническую часть самих фреймворков, то не думаю что Angular Light чем то особо уступает, а такие вещи как текстовые директивы дают дополнительные интересные кейсы которых нет в «полном» Angular.
          +1
          Я всё же думаю что href= надо оставлять, хотя бы для поисковых роботов. HTML5 конечно даёт простор для разнообразия, но тут можно нарушить логику построения. Хотя это личное дело каждого, но как минимум читать такие линки труднее.
          Angular.JS очень мощная и удобная платформа для построения веб-приложений. Думаю что раз что-то кажется вам в нём ненужным — вероятно вы просто не знаете как это применить. Не в коем случае с вами не спорю, наоборот это хорошо что вы делаете что-то для себя и для других людей, это лишь моё личное мнение. В компании где я работаю зачастую мы добавляем что-то в angular, потому что нам реально многого нехватает, к примеру таких вещей как ng-enter, focus и др.
            +1
            В интернете можно найти много негатива о Angular.js, для неё делают оболочки над созданием директив и контроллеров, пишут статьи типа «как все же сделать директиву», попадаются такие (глупые?) моменты которые нужно учитывать, громкие статьи на подобии этой — это все говорит что не всем все нравиться (не все идеально).
            Ещё есть такая популярная картинка, с провалами на графике
            image

            А Angular Light — это одна из альтернатив, коих много. То что разные разработчики используют Angular Light, говорит о том что он для кого-то полезен.
              +1
              Кривая обучения неоднозначна да, но тем не менее удобнее angular-a не встречал.
              Попробую Light на новом проекте — там нужно быстро сделать прототип без заморочек, поэтому он там подойдет кмк.
              PS «нравиться» — tsya.ru
                0
                Можно ссылок на альернативы накидать?
                  0
                  Тут есть некоторый перечень, кстати vuejs разрабатывается разработчиком из Google, т.е. в самом гугле Angular.js не всем нравится.
              0
              Не видел раньше этот проект. Недавно столкнулся с необходимостью выбрать для себя что-то из Backbone/Ember/Knockout/Angular и был неприятно удивлен перегруженностью Ангуляра, Эмбера и неизучаемостью Бэкбона. Выбрал Нокаут. В принципе все получилось, но наелся я с ним порядком, а некоторые вещи без грязнейших хаков не удалось сделать. Так что в следующем проекте обязательно опробую AL.
                0
                В чем принципиальная разница между контроллером и директивой?
                Можно ли наследовать контроллеры, чтобы на базе одного создавать новый?
                Есть ли методы (события) для взаимодействия контроллеров?
                  0
                  Технически, контроллер — это просто ф-ия, и директива по функционалу его перекрывает, поэтому можно в качестве контроллера можно использовать директиву, например: todo на контроллере, todo на директиве, разницы особо нет, но с директивой появляется возможность указать приоритет, необходимость дочернего scope, и т.п.

                  Наследовать контроллеры не приходилось, как вариант можно вызвать родительский контроллер, после чего переопределить необходимые методы в scope, пример. Хотя ничего не мешает использовать какую-нибудь развесистую систему наследования и при необходимости переопределить метод alight.getController.

                  Методов взаимодействия нет, можно использовать какие-нибудь pubsub библиотеки, которых, готовых уже достаточно.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое