Лучшее сохранение данных для приложений Angularjs / Javascript на PhoneGap?

39

Я ищу, чтобы найти лучшие практики для сохранения данных Angularjs в приложении PhoneGap. Я использую Ionic Framework поверх этого, но не относящийся к этому вопросу, поскольку он просто построен поверх Angular и Cordova.

Мне нравится, что Angular остается гибким в решениях сохранения данных, это имеет смысл, поскольку это веб-инфраструктура, а не только инфраструктура гибридных приложений... хотелось бы знать, как люди решают эту проблему.

Вот обзор:

Требования

  • Добавить локальную базу данных в сборку приложений для предварительно загруженных данных. Это будет превышать предел данных 5 МБ.
  • Загружать данные из локальной базы данных при запуске.
  • Сохранение обновленных данных в локальном хранилище данных для сохранения.
  • При желании предпочтительнее использовать схему.
  • Простой интерфейс запроса. Я мог бы загружать все данные в память и просто использовать стандартные фильтры Angular для этого, если производительность была приличной.
  • Интерфейс объектных запросов... что-то вроде ORM, подобной ActiveRecord, вместо того, чтобы писать SQL в моем приложении.
  • Будущее доказательство. Я не хочу изобретать велосипед каждый раз, когда я создаю приложение, которое нуждается в постоянстве данных. Также хотел бы выбрать что-то более стандартное, если это возможно, чтобы я мог продолжать использовать его в будущем... что-то вроде Indexeddb имеет смысл здесь.

Функции

Я рассматривал следующие параметры. Можете ли вы предоставить любую обратную связь по любому из них?

  • Breezejs - больше ориентируется на сервер. Есть ли интерфейс SQLite?
  • YDN-DB - похоже на вариант, но также кажется немного неясным по сравнению с некоторыми другими вариантами.
  • JayData - все еще активна? Обеспокоена коммерческим аспектом этого.
  • Persistencejs - Это выглядит многообещающим. Является ли проект еще активным?
  • ngStorage - это только интерфейс localStorage? Решает ли он ограничение 5M?
  • Angular -cache - Могу ли я получить данные для предварительной загрузки? Как долго я могу сохранять данные?
  • localForage - не знаю много об этом. Решает ли он ограничение 5M?
  • Pouchdb - обеспокоен языком запросов. не решает ограничение 5M
  • Couchdb Lite - обеспокоен языком запросов.
  • WebSQL - я не использую это, потому что кажется, что он на пути... плюс предел 5M.
  • Indexeddb - имеется прокладка, которая создает совместимый слой для большинства основных браузеров. 5M предел. Если бы я мог использовать это на вершине Sqlite, что, вероятно, станет для меня победителем, поскольку все больше основано на стандартах.
  • Сохранить в json файле. Просто используйте простые старые объекты, а затем используйте файл apg для работы с телефоном и загружайте сериализованные данные. Похоже на боль, чтобы сериализовать все данные каждый раз, когда мы хотим сохранить... но вариант, пока я могу использовать фильтры Angular.

Извините за длинный пост. Я действительно хотел бы увидеть некоторые мысли о лучших практиках. Понравился бы Angular способ справиться с большой устойчивостью данных в гибридных мобильных приложениях.

Спасибо

Теги:
cordova
persistence

3 ответа

18

PouchDB dev здесь. Очевидно, я предвзятый, но здесь я беру:

  • Лучший способ обойти квоты на хранение в PhoneGap/Cordova - использовать плагин SQLite для iOS/Android. Производительность также лучше, особенно на Android. ( Изменить: в современном пост-Kitkat Android это действительно хуже.)

  • В WebSQL есть хороший язык запросов, но вы хотите быть надежным, то есть не привязывать себя к мертвому стандарту. Там также можно использовать Windows Phone и Firefox.

  • Итак, если вы используете PouchDB и устанавливаете плагин PhoneGap, он будет работать в кросс-браузере, и вы избежите ограничения на хранение на iOS/Android. Win?

Кроме того, это мой личный опыт, который Angular соответствует PouchDB, как PB & J, поскольку Angular имеет дело с прямолинейными объектами JSON, а также делает Pouch. (Сравните это с Ember и Backbone, у которых есть пользовательские классы, которые вы должны экспортировать в /import из JSON – это немного сложнее.)

Удачи в том, что вы выберете!

  • 0
    Если я правильно понимаю, у pouchDb нет ограничений по размеру? Я могу хранить 1 ГБ?
  • 1
    Не совсем pouchdb.com/faq.html#data_limits
Показать ещё 2 комментария
6

Вы можете использовать localForage и мою реализацию в angular: https://github.com/ocombe/angular-localForage На мобильном устройстве он будет использовать индексированный DB или webSQL, а начальный предел будет 50 МБ. Синтаксис будет очень прост в использовании в вашем проекте angular.

  • 2
    Будьте осторожны с этим, поскольку база данных websql на iOS хранится во временном хранилище данных и может быть очищена ОС в любое время. Переключитесь на использование собственной базы данных + github.com/thgreasi/localForage-cordovaSQLiteDriver, и это будет безопаснее.
1

Indexeddb - имеется прокладка, которая создает совместимый слой для большинства основных браузеров. 5M предел. Если бы я мог использовать это на вершине Sqlite, это было бы для меня победителем, поскольку все больше основано на стандартах.

Собственно, предел для WebSQL (слой ниже прокладки, который вы фактически используете под капотом) составляет * 50 * M. Однако есть запрос на доступ, который вы можете использовать для получения большего объема хранилища. Кроме того, это то, что я бы порекомендовал именно по таким причинам: стандартам. Ходят слухи, что Safari 7.1 будет поставляться с поддержкой IndexedDB.

  • 0
    Спасибо, Джефф, ты использовал indexeddb в аналогичной среде сборки? Так что, если бы я использовал indexeddb, вы говорите, что он будет запрашивать у пользователя доступ к 50M, когда дБ превысит размер? Мы отправим не более 3 МБ начальных данных, но после первой синхронизации с нашей службой REST будет загружено гораздо больше.
  • 0
    В будущем, но я мог бы заняться спонсированием проекта, который создаст интерфейс между API indexeddb и плагином Sqlite Cordova. Это было бы стандартами и отвечало бы всем моим требованиям.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню