Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   tasty-cookies (Вкусное печенье) (https://javascript.ru/forum/dom-window/62318-tasty-cookies-vkusnoe-pechene.html)

Алексей Петрович 04.04.2016 18:25

tasty-cookies (Вкусное печенье)
 
История старая, я так думаю все помнят window.cookie = '...' (А может кто этим пользуется), жутко не удобная хрень.

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

Совсем не давно я стал знакомиться с angular, и как не странно у них тоже своя реализация cookies, не много лучше, но мне она кажется немного "странной", "мудрёной". Методы putObject, getObject - вообще ужас :-E, и зачем они?

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

На почве этого всего я решил изобрести свой велосипед с максимально круглыми колёсами и удобным сидением. Мне кажется это правильно. Работа затянулась на несколько суток, в общем вот что получилось сама библиотека tasty-cookies ну и русская документация.

Она использует объект JSON поэтому если надо поддержка старых браузеров можно подтянуть грабли типо JSON 3, хотя о чем это я :blink:?

Хотелось бы услышать критики, оценки работы, ну и само собой предложений по улучшению библиотеки.

Deff 04.04.2016 23:50

var a={b:1,с:"Бла-бла бла"}
var b = JSON.stringify(a);
localStorage["store"]=b;
alert("Записали cтроковую развертку объекта")


var store = localStorage["store"];
//Cнова трансформируем в объект:
store = JSON.parse(store);
alert(['store.b='+store.b,'store.c='+store.с]);

Deff 04.04.2016 23:56

Цитата:

Сообщение от Алексей Петрович
если надо поддержка старых браузеров можно подтянуть грабли типо JSON 3,

На старых ИЕ фишка слабо реальная, ибо объем куков ограничен для оных 4096 байт, (учитывая необходимость и куков от сервера наверно можно использовать не более половины 2Кб - серьезный объект не влезет (особенно с русским текстом, который для Ие нужно перекодировать через encodeURIComponent. В новых браузерах на объём куков на домен тоже есть ограничение(не помню точно, но примерно 24кб)
Ограничение же для localStorage 5Mb. localStorage есть начиная с ИЕ8
===========
Для Storage все эти библиотечки для записи считывания в виде объектов давно уже есть (для куков наверно не имело смысла)

Алексей Петрович 05.04.2016 04:33

Web Storage API Плохо телефонами поддерживается, а opera mini так вообще не знает что это такое а только она занимает 30% доли рынка. Это подходит для конкретного проекта и задачи. Пока к сожалению этим нельзя полностью заменить cookies.

Будет время когда Web SQL API будем пользуемся.

Алексей Петрович 05.04.2016 08:14

Rise, эту зубодробительную конструкцию выплёвывает TypeScript (Решил по экспериментировать).

Как всем известно arguments это псевдо-массив он имеет длину и числовые ключи, но он не имеет методов массива так как это объект. И что бы работать с ним как с массивом TypeScript и делает такую штукенцию.

В исходнике было что то типо:
export function methodName(...keys:string[]): any {
  // ...
}

Ну и собственно этот метод можно вызывать с любым количеством аргументов. К примеру с помощь метода get можно получить сразу несколько (Или сколько надо) cookie https://github.com/Alex5646/cookie.j...#cookiegetkeys

Deff 05.04.2016 13:22

Цитата:

Сообщение от Алексей Петрович
Web Storage API Плохо телефонами поддерживается,

Зато на телефонах FileAPI отлично поддерживается

Алексей Петрович 05.04.2016 14:03

Цитата:

Сообщение от Deff (Сообщение 413204)
Зато на телефонах FileAPI отлично поддерживается

Да и на компе вроде поддержка есть caniuse, только вот у IE и Safari конструктора класса нет, а так вроде не чего.


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