Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 09.06.2014, 23:43
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от monolithed Посмотреть сообщение
А как же принцип "Не плати за то что не используешь"?
Это ща к чему? Есть модульная сборка, можно сделать свой билд. Скорость работы либы такая же, как если бы всё хардкодить на циклах, т.е. опять таки никаких переплат, а вот профит очевиден.

Да и максимальная сборка либы - это всего 16 килобайт, объём такой же как и у underscore, а функционал несоизмеримо больше, а про скорость я вообще молчу.

В общем на JavaScript.ru как обычно: "описание не читал, но по любому не нужон"
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 09.06.2014 в 23:46.
Ответить с цитированием
  #12 (permalink)  
Старый 10.06.2014, 00:17
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от kobezzza
В общем на JavaScript.ru как обычно: "описание не читал, но по любому не нужон"
Да нет, слежу с первой версии... просто пока не могу понять где бы эта либа пригодилась в моей работе
Ответить с цитированием
  #13 (permalink)  
Старый 10.06.2014, 00:24
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от monolithed Посмотреть сообщение
Да нет, слежу с первой версии... просто пока не могу понять где бы эта либа была полезна
Ты не мог следить с первой версии, т.к. первая публикация была с 3-й

Эта либа общего назначения, т.е. использовать её можно везде, все мои проекты (кроме Snakeskin, т.к. только в 5-й версии был добавлен механизм "контекста forEach") используют Collection. Одно "но", чтобы писать на Collection нужно любить функциональщину, т.е. не шарахаться от map / reduce и прочего, т.к. либа явно декларирует именно такой подход.

Пример, функция которая преобразовывает dash-style в camelCase

String.prototype.convertDashStyleToCamelCase = function () {
    return $C(this).reduce(function (res, el) {
        if (el !== '-') {
            res += this.$.up ? el.toUpperCase() : el;
        }

        this.$.up = el === '-';
        return res;
    
    }, '');
};


Обратная операция

String.prototype.convertCamelCaseToDashStyle = function () {
    return $C(this).reduce(function (res, el) {
        var lc = el.toLowerCase();
        return res + (el !== lc ? '-' : '') + lc;
    }, '');
};


Отбор элементов для пагинации

$C(...).forEach(function (el) {
        ...
    
}, {startIndex: 10, count: 10});


Тоже самое, но в обратном порядке

$C(...).forEach(function (el) {
        ...
    
}, {startIndex: 10, count: 10, reverse: true});


Количество вхождений каждого символа в строке

$C('fooobar1212').group(el => el)


Количество вхождений буквы 'o' в строке

$C('fooobar1212').length(el => el == 'o')


Преобразовать объект {ключ: значение} в Set из значений, которые больше 1


$C({a: 1, b: 2, c: 3}).map(el => el, {initial: new Set, filter: el => el > 1})


При этом не важно, что мы итерируем, хоть массив, объект, Map, Set, генератор, строку и т.д. все методы работают одинаково и со скоростью циклов, но в сахарном функциональном виде.

Примеров можно сделать уйму, но достаточно взглянуть на методы: https://github.com/kobezzza/Collection/wiki
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 10.06.2014 в 01:29.
Ответить с цитированием
  #14 (permalink)  
Старый 10.06.2014, 14:04
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Написал короткую описательную статейку на хабр
__________________
kobezzza
code monkey
Ответить с цитированием
  #15 (permalink)  
Старый 10.06.2014, 15:08
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от kobezzza
Ты не мог следить с первой версии, т.к. первая публикация была с 3-й
Ага, спиздел. Короче с первой статьи на хабре
Ответить с цитированием
  #16 (permalink)  
Старый 10.06.2014, 19:54
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от kobezzza
чтобы писать на Collection нужно любить функциональщину, т.е. не шарахаться от map / reduce и прочего, т.к. либа явно декларирует именно такой подход.
вот у меня появилась мысль форкнуть LiveScript и примешать туда $C

т.е. пишем на обычном LS завёрнутую конструкцию, а это дело разворачивается в один вызов $C

без всяких "var $C = require("Collection")"
Ответить с цитированием
  #17 (permalink)  
Старый 10.06.2014, 19:59
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от melky Посмотреть сообщение
вот у меня появилась мысль форкнуть LiveScript и примешать туда $C
Гм, мне кажется это слишком сурово, т.е. ты хочешь на уровне синтаксиса интеграцию сделать?)

Сообщение от melky Посмотреть сообщение
без всяких "var $C = require("Collection")"
Я делаю так (в ноде): в файле конфига пишу

var collection = require("collection.js");

global.$C = collection.$C;
global.Collection = collection.Collection;


И всё, можно нигде больше не кидать require

PS: следует заметить, что я не против require, просто в случае с Collection его нужно подключать везде и это утомляет
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 10.06.2014 в 23:19.
Ответить с цитированием
  #18 (permalink)  
Старый 10.06.2014, 20:04
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от kobezzza
Гм, мне кажется это слишком сурово, т.е. ты хочешь на уровне синтаксиса интеграцию сделать?)
да.

хотя...

спад производительности почти незаметен в LS... а если нужны производительные части, можно вызвать $C )

Сообщение от kobezzza
Я делаю так (в ноде): в файле конфига пишу
точно! забыл про глобали
Ответить с цитированием
  #19 (permalink)  
Старый 10.06.2014, 20:11
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
спад производительности почти незаметен в LS... а если нужны производительные части, можно вызвать $C
Странный подход, не спорю, что Collection быстрый, но это не главное, как мне кажется

Я то хотел сделать единое навороченное функциональное АПИ для всех видов итерируемых данных
__________________
kobezzza
code monkey

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

Выпустил микроапдейт: 5.0.1.
__________________
kobezzza
code monkey
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие и открытие дива по клику OLDBOY Общие вопросы Javascript 30 28.09.2016 20:41
Collection v4 kobezzza Ваши сайты и скрипты 50 13.02.2014 19:10
как обновлять collection каждые 5 секунд sergey_magic Backbone.js 1 29.07.2013 14:31
Collection – фреймворк для управления данными kobezzza Ваши сайты и скрипты 155 10.05.2013 08:59
Удаление всех options в select Ceргей Элементы интерфейса 9 28.11.2012 07:36