Pull to refresh

Comments 19

Как говорила Екатерина Тихомирова: «Как долго я тебя ждала...»
ИМХО, сторадж — это хранилище. У него должно быть два метода: get и set, может еще clear и drop. Остальное — ваш личный велосипед. Для работы с local\session storage есть store.js.
Ну с такой логикой store.js это тоже велосипед — ведь get и set есть и у window.LocalStorage :)

Например, мне надо иметь список из 10 уникальных запросов. Причем в обратном порядке их выполнения (последний наверху). Разве плохо, когда это делается в одну строку?

br.storage.appendUnique('mru', sql, 10).get('mru');

А в целом — да, я изобретатель велосипедов! Если новый велосипед делает жизнь проще — я не против :)
Store.js решает одну четко поставленную задачу: релизует хранилище во всех браузерах в том или ином виде его поддерживающих, организация выдачи\сортировки и прочего — это задача другой библиотеки, или бизнес-логики. Просто чем дальше в лес — тем больше jquery получается, например следуя вашей логике: а что если я хочу иметь список из уникальных запросов, но чтоб вернуло мне только чётные? А давайте реализуем! И тут все заверте… бум! Новый ExtJs, хотя налинали с доброго и вечного: хотим удобное хранилище на стороне клиента.
Мне кажется get/set не хватит для большинства задач, а значит вы всегда будете писать дополнительный код. А скорее всего завернете его в библиотеку. И придете к той же ситуации что и я — есть что-то, что реализует get/set, но его всегда не хватает.
Абсолютно правильно. Завернем. Но мы будем хранить в сторажде обьекты и сортировка и фильтрация у нас будет работать с обьектами, и ей будет всеравно — откуда данные. И того получаем: самостоятельное хранилище и самостоятельный фильтратор объектов. Они друг от друга не зависят. Или вы недеетесь что вашей фильтрации хватит всем? )
Конечно я уверен, что моей фильтрации кому-то не хватит. Но я ведь тоже выдам объект (или массив) в ответ на get. А так как, я уверен, что в абсолютном большинстве случаев ничего сложного с данными из LocalStorage не делается (станно было бы серъезно полагаться на него) — значит хватит моего инструментария (get / each). Так глядишь — лишние десять минут человеку сохраню. Десять человек — уже 100 минут для чьих то семей! :)
Нет, я нисколько не критикую ваш подход, и темболее — вашу библиотеку, просто сам сталкивался с подобным, потом тащишь за собой километры мертвого когда, который переписать обламывает, а использовать нельзя, потому как функционал уже давно стал недостаточен. С тех пор делю всю иерархию приложения на как можно более атомарные блоки. В вашем случае, я-бы разделил фторадж и фильтрацию. Думаю на этом разговор можно завершить, все что вышесказанно: мое личное мнение и никому не навязываю. Больше либ, хороших и разных )
Недавно Andrea Giammarchi представил новый подход к организации client-side хранилища — github.com/WebReflection/db. Ключевое отличие от «обычных» реализаций — асинхронность.
Мне кажется для LocalStorage такой подход ни к чему — ну кто там хранит что-то серъезное. Ведь его в любой момент могут очистить. Да и инструментарий (set/get) к этому не располагает.

Другое дело Web SQL Storage — полноценный SQLite инстанс в браузере. И работа с ней изначально сделана асинхронной. Потому как мощный инструментарий (SQL) располагает к хранению там достаточно больних объемов данных. Непонятно только, почему работа над ним остановилась.

Серъезно полагаться на LocalStorage можно разве что в мобильных приложениях. Но опять же — тут более важно будет удобство, а не асинхронность. Аснихронного set/get точно будет недостаточно. Я бы построил такое приложение на Web SQL DB (уже асинхронно) или взял бы какую-то обертку типа TaffyDB (и прикрутил бы асинхронность если планировал бы большие объемы).
Капец паравозы, неужели такой стиль кому-то удобно читать?
Ну в jQuery он используется направо и налево. Частенько так дейстительно удобнее. Например:

$('.message').text('Error!').css('color', 'red').show();

вместо

var e = $('.message').text('Error!');
e.css('color', 'red');
e.show();

С другой стороны никто ведь не заставляет использовать chaining call :)
UFO just landed and posted this here
А почему бы вместо br.storage.set('array', [1, 2, 3]) не сделать просто br.storage.set([1, 2, 3])?
UFO just landed and posted this here
Ой, точно. Извините, заработался =)
Sign up to leave a comment.

Articles