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)

a.malitsky 28.06.2012 17:14

Банальный вопрос (связанный не только с данным фреймворком) - можно как-нибудь отключить вывод многочисленных предупреждений "anonymous function does not always return a value" в консоли FF по collection.js или придётся смириться? Несколько мешает отладке своих скриптов.

kobezzza 28.06.2012 19:19

Я думаю вам нужно отключить варнинги (предупреждения) JS в настройках отладчика

a.malitsky 23.10.2012 14:05

А что с сайтом? Всё, прощай фреймворк? :) Нужна документация!
Про новую версию уж молчу.

kobezzza 23.10.2012 14:55

Цитата:

Сообщение от a.malitsky (Сообщение 211776)
А что с сайтом? Всё, прощай фреймворк? :) Нужна документация!
Про новую версию уж молчу.

Сайт как раз прикрылся, т.к. почти сделана новая версия и обновляется дока:) Скоро всё снова ок буит:)
Просто пилю после работы, когда есть настроение - вот так и медленно всё.

kobezzza 28.10.2012 20:47

Наконец допилил версию 3.8! Кроме исправления различных багов в новой версии появились следующие фичи:
  • Появился новый метод query, который принимает на вход запрос в SQL синтаксисе;
  • Добавлена поддержка querySelectorAll (нативный DOM драйвер);
  • Увеличена скорость работы некоторых методов;
  • Теперь Collection сжимается в "продвинутом режиме" GCC;
  • Рефакторинг кода и комментариев (теперь комментарии полностью на русском языке, решил не выпендриваться:) );
  • Теперь this в колбеках ссылается на инстанс объекта, а для ссылки на саму функцию была добавлена локальная переменная callee.

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

По поводу метода query: сейчас он поддерживает только запросы типа SELECT. Есть поддержка переменных (через AS), INNER/LEFT/RIGHT JOIN, GROUP BY, ORDER BY, WHERE, HAVING, TOP, LIMIT, INTO, стат функции SUM/AVG/COUNT и множество строковых функций (можно добавлять свои), а также выполнения сразу нескольких запросов в одном методе (через ; ).

Примеры:
var db = new Collection();
db.pushCollection({
	users: [
		{id: 1, name: 'Kobezzza', lvl: 50},
		{id: 2, name: 'Onky', lvl: 55},
		{id: 3, name: 'Drobila', lvl: 60},
		{id: 4, name: 'Over', lvl: 70},
		{id: 5, name: 'Ten', lvl: 60}
	],
	
	skils: [
		{
			sid: 1,
			uid: 1,
			value: 'moto'
		},
		{
			sid: 2,
			uid: 2,
			value: 'auto'
		},
		{
			sid: 3,
			uid: 1,
			value: 'dance'
		}
	],
	
	buf: [
		{
			bid: 1,
			uid: 1,
			b_value: 'ice'
		},
		{
			bid: 2,
			uid: 2,
			b_value: 'fire'
		},
		{
			bid: 3,
			uid: 1,
			b_value: 'water'
		}
	]
});

db.query('SELECT * FROM `users`');
db.query('SELECT el.name, el.lvl FROM `users`');
db.query('SELECT el.name AS nm, el.lvl AS power FROM `users`');
db.query('SELECT * FROM `users`, `skils`');
db.query('SELECT * FROM `users` INNER JOIN `skils` ON id=uid INNER JOIN `buf` ON id=uid');
db.query('\
	SELECT TRIM(el.name) AS name, el.lvl, SUM(el.lvl) AS sum FROM `users`\
		INNER JOIN `skils` ON id=uid\
		INNER JOIN `buf` ON id=uid\
	GROUP BY lvl\
	HAVING sum > 55\
');
db.query('SELECT * FROM `users` WHERE el.lvl > 50 LIMIT 1, 1');
db.query('SELECT TOP 1 * FROM `users` WHERE el.lvl > 50');
db.query('SELECT * INTO `test` FROM `users` WHERE el.lvl > 50');


Буду рад услышать критику и замечания, а также отвечу на любые вопросы:) Спасибо за внимание.

ЗЫ: в версии 3.9 я добавлю поддержку новых хранилищ в браузере (IndexedDB, FlashStorage и т.д., чтобы была возможность хранить большие объёмы данных, вместо 5мб LocalStorage), поддержку популярных шаблонизаторов и закончу систему модульной сборки (можно будет через сайт подключать необходимые модули, чтобы не тащить лишний код).

ЗЫЗЫ: кому интересна логика работы метода query, то копать https://github.com/kobezzza/Collecti...ter/files/csql.

devote 28.10.2012 21:49

kobezzza,
отличная работа.

melky 28.10.2012 22:03

скрипт просто потрясный!

если не секрет, что за сборщик (builder.js) ?

master/collection.min.js - это ужатый в advanced mode скрипт?

похоже, сжатие ещё не идеальное :)

devote 28.10.2012 22:06

Цитата:

Сообщение от melky
похоже, сжатие ещё не идеальное

да, согласен. сжатие не гуд. слишком много длинных переменных.

kobezzza 28.10.2012 22:12

Цитата:

Сообщение от devote (Сообщение 212767)
kobezzza,
отличная работа.

Спасибо:)

Цитата:

Сообщение от melky (Сообщение 212769)
скрипт просто потрясный!

Спасибо за лестный отзыв.

Цитата:

Сообщение от melky (Сообщение 212769)
если не секрет, что за сборщик (builder.js) ?

Это сборщик на ноде, который написал Коля (Kolyaj)
https://github.com/Kolyaj/BuildJS , правда я его немного допил для своих нужд (в Collection этих нужд нет:))

Цитата:

Сообщение от melky (Сообщение 212769)
master/collection.min.js - это ужатый в advanced mode скрипт?

похоже, сжатие ещё не идеальное :)

Да, но увы вряд ли лучше уже получится, т.к. экспортятся публичные методы и свойства (а их много), все приватные методы и свойства сжимаются в кашу (cжимать всякие Collection.prototype нет смысла - это сделает GZIP). Модульная сборка поможет решить проблему "лишнего веса".

melky 28.10.2012 22:38

хм ... ну, только сам автор кода знает, как его коду лучше жаться :)

Цитата:

Сообщение от kobezzza
Это сборщик на ноде, который написал Коля (Kolyaj)
https://github.com/Kolyaj/BuildJS , правда я его немного допил для своих нужд (в Collection этих нужд нет)

я его тоже использую. Если можно, расскажете поподробнее о личных допилах ?


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