Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Collection v5 (https://javascript.ru/forum/project/47717-collection-v5.html)

kobezzza 23.09.2014 10:20

Цитата:

Сообщение от melky (Сообщение 331885)
kobezzza, как можно быстро понять $C? какая кривая обучения?

Ну с моей точки зрения, что самое сложное в понимании $C - это не $C, а сама концепция функционального программирования. По моим личным наблюдениям многие люди из всех методов массивов юзают всего 2:

forEach
some - причём some юзают, как forEach который можно сбросить :D

А всякие map / reduce / filter в глаза не видели и не знают.

Потом нужно понять, что $C - это антоним Unix Way, т.е.

// Классический Unix Way, супер избыточно и не эффективно
filter().filter().map().slice()

// $C, ни одной лишней операции, супер эффективно и быстро
map(filter(), filter(), slice())


А остальное - это дело техники. Ну просто нужно потратить некоторое время и поиграться: может день/два и всё, всё таки библиотека не большая и есть подробная русская документация.

С другой стороны можно взять сборку Collection.core, где в составе 1 forEach, а сама либа весит всего 10кб и юзать :) В отличии от нативного forEach Collection поддерживает все существующие виды коллекций, работает супер быстро и поддерживают кучу опций.

kobezzza 23.09.2014 19:05

Цитата:

мб есть какие-то функции, которые используются при написании кода чаще всего?
Ну у меня самое частое это forEach, map, reduce, search, get, length, extend.

Вообще полную сборку библиотеки по функционалу можно разбить на блоки:

1) Итерационное API - набор методов, большинство из которых напоминают нативные для массивов, для итерациям по коллекциями, самая главная часть

2) Контекстное API - набор методов для работы внутри итератора

$C([ ... ]).forEach(function () {
    this.break();
});


3) Ссылочное API - небольшой набор методов для универсального доступа к свойствам объектов

var obj = {a: new Map([[1, [1, 2, 3, 4]]])};

$C(obj).get(['a', 1, 0]);


4) Кластерное API - набор методов, для инкапсуляции разные параметров внутри экземпляров $C

$C().addFilter({
    filter1: function () { ... },
    filter2: function () { ... }
})

$C([ ... ]).get('filter1 && filter2')


5) API для хранения данных - набор методов для загрузки / выгрузки коллекций в различные локальны хранилища

$C({ ... }).save({
    namespace: 'myData',
    lib: 'indexedDB'
})

...


$C().load({
    namespace: 'myData',
    lib: 'indexedDB'
})


6) Статичные методы - полезные функции, вроде extend

Цитата:

я б мог заняться этим на досуге - заодно и выучу её
Ну, если сделаешь, то честь и хвала :) Хотя мне кажется, что для тебя выучить $C будет вопросом дня :)

Цитата:

есть ли какой-нибудь сайт для $C (gh-pages), чтобы начать?
Когда то был, но я его потёр, когда перешёл на Gh, сейчас всё в вики.

Цитата:

PS. кстати, $C выглядит очень даже многообещающе, серьёзно говоря. и отлично подходит, например, для React
Спасибо :) Но мне кажется, что $C это в первую очередь очередь универсальных хэлпер для коллекций, т.е. замена underscore / lodash и т.д. Т.е. библиотека на каждый день: ну я собственно её так и юзаю :)

kobezzza 24.09.2014 10:05

В канарейке хрома новые виды коллекций и генераторы уже работают без включённого флага --harmony. Ура!

kobezzza 05.10.2014 14:50

Выпустил патч 5.2.9

melky 05.10.2014 17:12

kobezzza, ты в travis ci тестируешь? видел коммит в поддписке)

kobezzza 05.10.2014 17:20

Цитата:

Сообщение от melky (Сообщение 333574)
kobezzza, ты в travis ci тестируешь? видел коммит в поддписке)

Угу, хотя для Collection пока просто биндинг добавил :)

travis удобен тем, что можно забить сразу несколько версий ноды для теста + автоматическая синхронизация с комитами гита.

kobezzza 22.10.2014 15:40

Выпустил патч 5.2.10

kobezzza 31.10.2014 13:31

Выпустил патч 5.2.12

kobezzza 01.11.2014 22:01

Выпустил версию 5.3.1.

Добавлен новый метод .contains

kobezzza 05.11.2014 23:42

Выпустил патч 5.3.7


Часовой пояс GMT +3, время: 21:49.