Как мы знаем localStorage API имеет некоторые ограничения, которые, возможно, придется обходить при написании крупных приложений. Новая библиотека cross-storage* дает возможность меж-доменной поддержки localStorage с использованием полномочий. Данная библиотека так же включает в себя Promise API для стандарта ES6.
Cross-storage использует два компонента: хабы(hubs) и клиентов(clients). Хабы могут выставлять полномочия в зависимости от домена и это есть ничто иное как принудительное использование принципа одинакового источника. Указанная библиотека включает в себя такие типы доступа как чтение, запись, и удаление (
get, set, del
).CrossStorageHub.init([
{ origin: /\.example.com$/, allow: ['get'] },
{ origin: /:(www\.)?example.com$/, allow: ['get', 'set', 'del'] }
]);
Клиент в свою очередь сможет получить доступ к хабу следующим образом:
var storage = new CrossStorageClient('https://store.example.com/hub.html');
storage.onConnect().then(function() {
// Set a key with a TTL of 90 seconds
return storage.set('newKey', 'foobar', 90000);
}).then(function() {
return storage.get('existingKey', 'newKey');
}).then(function(res) {
console.log(res.length); // 2
}).catch(function(err) {
// Handle error
});
Обратите внимание что метод
onConnect
возвращает promise которое выполняется когда соединение с хабом было установлено. Вы так же можете вызвать storage.close
под конец соединения, который реализован с использованием iframe
.Даниель рекомендует использовать полифил es6-promise для старых браузеров.
Проект использует Gulp для сборки клиентского кода и так же поставляется в комплекте с тестами на zuul.
Пометки
* Библиотека cross-storage, лицензия: Apache 2.0, npm: cross-storage, bower:
cross-storage
, автор: Daniel St. Jules