Angular 7 PWA для веб-хранилищ

Вот версия Node ES6, смешанная с ответами из @Aaron V и @ user4976005 , она устраняет проблему с вызовом hasOwnProperty:

const isCyclic = (obj => {
  const keys = []
  const stack = []
  const stackSet = new Set()
  let detected = false

  const detect = ((object, key) => {
    if (!(object instanceof Object))
      return

    if (stackSet.has(object)) { // it's cyclic! Print the object and its locations.
      const oldindex = stack.indexOf(object)
      const l1 = `${keys.join('.')}.${key}`
      const l2 = keys.slice(0, oldindex + 1).join('.')
      console.log(`CIRCULAR: ${l1} = ${l2} = ${object}`)
      console.log(object)
      detected = true
      return
    }

    keys.push(key)
    stack.push(object)
    stackSet.add(object)
    Object.keys(object).forEach(k => { // dive on the object's children
      if (k && Object.prototype.hasOwnProperty.call(object, k))
        detect(object[k], k)
    })

    keys.pop()
    stack.pop()
    stackSet.delete(object)
  })

  detect(obj, 'obj')
  return detected
})

3
задан Arka Ghosh 8 March 2019 в 05:40
поделиться

2 ответа

Просто предложение в таком случае, почему вы можете проверить, находится ли пользователь в приватном просмотре или нет, и использует ли он затем локальное хранилище.
проверить PB вот так ->

var db = indexedDB.open ("test");
db.onerror = function () {/ Firefox PB включен ] /};
db.onsuccess = function () {/ Не включено /};

Больше ссылок -> браузер использует режим приватного просмотра

0
ответ дан Harish Karthick 8 March 2019 в 05:40
поделиться

Во-первых, следует понимать, что PWA или P rogressive W eb A pp по определению должен поддерживать все браузеры и должен быть прогрессивным в природа, т. е. в зависимости от возможностей браузера, приложение должно адаптироваться и выбирать, какие функции использовать, чтобы подбодрить пользователя.

Краткая аналогия:

Акула в аквариуме вырастет 7 дюймов , но в океане она вырастет 7+ Ноги [тысяча сто двадцать два].

  • Ваше приложение как акула!

  • Аквариум / Океан похож на ваш браузер !!

  • Ресурсы Аквариума / Океан - ваши функции браузера

Будь то аквариум или океан, акула все еще остается акулой (она похожа на одну, она охотится). Отличается масштаб / размер / мощность / производительность (например, у акул в океане большие зубы и добыча более крупной рыбы).

Применяя аналогию, дизайн вашего приложения не ДОЛЖЕН зависеть от базы данных / хранилища (или любой другой функции браузера) для визуализации, но в то же время он должен иметь возможность использовать их, если он поддерживается Браузер, чтобы обеспечить лучший пользовательский опыт. (Это означает, что PWA должны работать, даже если говорят, что localStorage не поддерживается каким-то странным браузером - слишком много, чтобы спрашивать!)

Если продолжить, ваше приложение может попытаться использовать IndexedDB в браузере, если нет, предоставить соответствующую механизм отката (отступление вообще НЕ обязательно должно быть локальным хранилищем !, но, возможно, простым рендерингом). IndexedDB используется для хранения больших объемов данных, которые требуют широких возможностей запросов, тогда как localStorage похож на sessionStorage, который сохраняется даже после закрытия окна, обычно предназначен для хранения некоторого набора пар ключ / значение. Попытка использовать один поверх другого была бы неправильной - они предназначены для разных типов наборов данных / вариантов использования.

Вкратце , в контексте PWA, НЕПРАВИЛЬНО думать «IndexedDB или Local Storage?» , но рассмотреть, какой опыт вы хотите предоставить своим пользователям на основе об ограничении возможностей браузера в вашем распоряжении.

Удачи с PWA !!!

Интересное прочтение о доступных опциях хранения в разных браузерах https://developers.google.com/web/fundamentals/ мгновенное и офлайн / веб-хранилище / # сравнение

0
ответ дан takrishna 8 March 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: