Тема: Collection v5
Показать сообщение отдельно
  #1 (permalink)  
Старый 04.06.2014, 19:48
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Collection v5
Всем здрасти!

Закончил работу над Collection 5.

Для тех, кто не в курсе, то что такое Collection.

И так, что нового:

1) Поддержка всех новых видов коллекций и технологий, а именно: Map, Set, WeakMap, WeakSet, генераторов, итераторов на основе протокола @@iterator.

var foo = new Map([[{}, 1], [null, 2]]);

$C(foo).map(el => el * 2) // new Map([[{}, 2], [null, 4]])

function *i() {
    for (let i = 0; i < 10; i++) {
        yield i;
    }
}

$C(i).get(el => el > 5) // [6, 7, 8, 9]


Работает во всех последних версиях браузеров (включая ИЕ).

2) Новый пласт методов и свойств для работы в контексте конкретного итератора.

$C([1, 2, 3, 4]).forEach(function (el) {
    if (el == 2) {
        this.break();
    }
});

$C([1, 2, 3, 4]).get(function (el) {
    if (el == 2) {
        this.modi(1);
    }

    return true;
}); // [1, 2, 4]


Подробнее в доке.

3) Новый метод filter (частный случай map), in, новые режимы для метода extend.

4) 100% code review который в итоге вылился в значительное улучшение интерфейсов методов (собственно поэтому версия 5, а не 4.3).

Основные изменения по сравнению с 4-й версией:

4.1) Метод remove возвращает массив или объект удалённых элементов;
4.2) Метод set возвращает массив или объект обновлённых элементов;
4.3) Метод add возвращает объект статуса добавления;
4.4) Параметр методов useForIn был заменён на более универсальный use с опциями работы: 'for', 'for in', 'for of'.
4.5) Метод groupKeys был удалён в пользу простого group с параметров saveKeys.

В остальном улучшения интерфейсов не нарушили обратную совместимость.

5) Более 900 новых тестов, а также заменён qUnit на Jasmine 2.
6) Улучшен модуль генерации кода, что дало в некоторых случаях дополнительный прирост производительности.
7) Оптимизация методов search и remove с помощью нового АПИ контекста итераторов позволило увеличить скорость работы в 2 раза.
8) Расширен механизм указателей для работы с новыми видами коллекций.
9) Исправлено множество ошибок, улучшены комментарии, теперь Collection на 100% проходит строгую проверку Closure Lint.
10) Проведена дополнительная оптимизация кода для работы в WebStorm (в результате которого было отправлено более 20-ти багов для JetBrains ) - теперь работает почти идеальный автокомплит и в WebStorm последней версии включены множество исправлений
11) Значительно улучшена документация и перенесена в Wiki.

Собственно, что пишу сейчас: кому не лень, почитайте имеющиеся доку на Wiki и скажите замечания и т.д. т.к. доку для меня писать самое сложное
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 09.06.2014 в 16:13.
Ответить с цитированием