Pull to refresh

[Перевод] Cross-Storage: Сделайте локальные данные доступными между доменами

Reading time 2 min
Views 5K
Original author: Alex Young
image

Как мы знаем 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
Tags:
Hubs:
+12
Comments 4
Comments Comments 4

Articles