Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Collection – фреймворк для управления данными (https://javascript.ru/forum/project/27848-collection-%E2%80%93-frejjmvork-dlya-upravleniya-dannymi.html)

kobezzza 26.04.2012 21:54

Collection – фреймворк для управления данными
 
Всем привет!:)

Хочу представить всем свою разработку (хотя уже как то представлял давно, но тема забилась оффтопом).

Данный фреймворк даёт очень мощное и гибкое АПИ для управлениями данными, в принципе есть всё, чтобы использовать, как полноценную СУБД.

Краткий список возможностей:
  1. Копирование, перемещение, удаление, слияние, сортировка и группировка;
  2. Статистические функции;
  3. Запросы по сложным фильтрам;
  4. Хранение данных в DOM Storage;
  5. Пространства имён;
  6. DOM шаблонизатор;
  7. Интерпретатор SQL.

Фреймворк написан на чистом JavaScript, однако для работы с DOM он использует сторонние библиотеки (для поиска узлов), из коробки есть поддержка: jQuery, DoJo, Mootools, Prototype, QSA (надеюсь Devote не против:) ), Sizzle. Хотя расширить этот список не составит труда.

Сфера применения огромна: например используя Collection можно за пару дней написать очень мощный табличный процессор, оффлайн БД для настольных приложений и т.д.. Сейчас я занимаюсь одним стартапом, где пробую свой велосипед на сервере (node.js), как основную СУБД, также Collection используется в некоторых сервисах Yandex.

Имеется подробный мануал и документация на сайте проекте: http://www.collection-js.com

Сама либа: http://www.collection-js.com/files/c...lection.min.js
Github: https://github.com/kobezzza/Collection

Чтобы понять, что же это такое, рекомендую прочитать: http://www.collection-js.com/manual/part-1.html

С уважением, Андрей!

ЗЫ: просьба не разводить холивар и оффтоп.

B~Vladi 27.04.2012 22:45

Цитата:

Сообщение от kobezzza
надеюсь Devote не против

Думаю, он будет только рад :)

Какие заметные отличия от похожего инструмента Follow.js?

Kolyaj 27.04.2012 23:32

Цитата:

Сообщение от B~Vladi
Какие заметные отличия от похожего инструмента Follow.js?

В коридор выйдите оба и поговорите. Вы в соседних комнатах сидите :)

B~Vladi 27.04.2012 23:33

Цитата:

Сообщение от Kolyaj
В коридор выйдите оба и поговорите. Вы в соседних комнатах сидите

Он сейчас в отпуске :)
Да и другим, возможно, интересно :)

Кстати, чувак, который это делал, рядом со мной сидит.

trikadin 27.04.2012 23:45

Цитата:

Сообщение от Kolyaj
В коридор выйдите оба и поговорите. Вы в соседних комнатах сидите

Ты сделал мою ночь)

B~Vladi 28.04.2012 00:07

Цитата:

Сообщение от trikadin
Ты сделал мою ночь)

Эмм, переведи?

kobezzza 28.04.2012 00:15

Цитата:

Сообщение от B~Vladi (Сообщение 171656)
Какие заметные отличия от похожего инструмента Follow.js?

Не знал про данную либу, посмотрел, интересно:) Но всё же у нас с ней мало чего общего, т.к. у меня основной упор делается именно на управление данными (т.е. я действительно очень серьёзно к этому подошёл, возможны перекрёстные ссылки, лимитируемость, группировки и т.д.), а не на их представление.

Изначально, когда я начинал писать свой Collection, мне нужен был только общий интерфейс стандартных методов для массивов и объектов, затем меня увлекла идея написания своей СУБД на JS, которая могла бы работать как на клиенте, так и на сервере.

Пример некоторого запроса на моём Collection:
// создадим новую коллекцию (структура может быть любой)
var db = new Collection({
	users: [
		{name: 'Андрей', age: 22},
		{name: 'Вася', age: 25},
		{name: 'Гоша', age: 19},
		{name: 'Петя', age: 27},
		{name: 'Стас', age: 23}
	],
	nmb: [1, 2, 3, 4, 5]
});

// запросим данные из кластера users о всех людях старше 20-ти и моложе 25-ти
// затем сохраним данные в новую коллекцию в стеке (назовём test) и назначим её активной
db.get('users >> :el.age > 20 && el.age < 25', '>>>test');
// теперь отсортируем по полю name
db.sort('name');


Чтобы понять что за магия с символами и т.д. достаточно прочитать мануал: http://www.collection-js.com/manual/part-1.html (там 10 глав, не более 30-ти минут чтения).

Я потратил на разработку сего чуда почти 3 года и последние 2 месяца трудился над мануалом и докой, хотелось бы услышать критику что ли) Ну а так, на следующем js meetup я уже обязательно про неё расскажу сам)

ЗЫ: завтра я уже выйду на работу, т.к. отпуск брал только на 5 дней)

B~Vladi 28.04.2012 00:32

Ну на следующем митапе я тоже собираюсь рассказать про свой адский шаблонизатор.
Вообще, идея агрегирования обработки данных мне понравилась, пугает только синтаксис запросов - далеко не самый низкий порог вхождения. Например мне не понятно почему при первом вхождении el используется двоеточие, а потом нет?

Gozar 28.04.2012 09:17

Цитата:

Сообщение от B~Vladi (Сообщение 171679)
почему при первом вхождении el используется двоеточие, а потом нет?

Я по началу думал, что:
чтобы найти в строке управляющую конструкцию, а затем её просто запоминаем и нет нужды указывать двоеточие дальше.

А затем натолкнулся на вот эту строку:
'(:el.sex == "female" && el.age > 18) || (:el.sex == "male" && el.age < 30)'


А потом я наткнулся на такую строчку:
':el == <:i:>'


Может я не нашел, но в учебнике напрочь отсутствует сгруппированное объяснение всех этих конструкций: ':el', '<:i:>'
и принцип парсера строки(как например в доке mysql) или просьба ткнуть меня носом.

Ещё у меня вопрос:
collection умеет работать с типами: "дата","время"?

По возрасту и прайсам всё понятно, 12 и т.д. целые числа, а по сложнее, с плавающей точкой например или дата и время?

зы: смотрел быстро, мог не найти где это описано, но я не нашёл.
зы2: по ссылке(
Цитата:

Сообщение от kobezzza
Чтобы понять что за магия с символами и т.д. достаточно прочитать мануал: http://www.collection-js.com/manual/part-1.html (там 10 глав, не более 30-ти минут чтения).

) ходил, не дошло про магию с символами.

Kolyaj 28.04.2012 09:22

Цитата:

Сообщение от kobezzza
где пробую свой велосипед на сервере (node.js), как основную СУБД

А как это на сервере работает? Всё в памяти хранится?


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