2013-04-23 14 views
8

Próbuję wykonać niektóre aplikacje FirefoxOS, ale nie widziałem łatwego sposobu na przechowywanie danych lokalnych. Słyszałem o IndexedDB, ale wydaje się to zbyt skomplikowane. Czy jest jakaś inna alternatywa? Jeśli nie, czy jest jakiś łatwy tutorial na ten temat?Przechowywanie danych w FirefoxOS

Rozważałem przechowywanie i odzyskiwanie danych zdalnych (wykonanie żądania domeny croos), ale mam pewne problemy z uprawnieniami. Czy jest jakiś tutorial o XHR dla FirefoxOS?

Dzięki.

+0

IndexedDB nie jest takie trudne. Najtrudniejszą częścią (przynajmniej dla mnie) było zaprojektowanie moich aplikacji wokół wydarzeń DB. – Eldelshell

Odpowiedz

7

Najlepszy dokument IndexDB, który mogę znaleźć, to Using IndexDB w MDN.

Istnieje wiele domyślnych aplikacji Firefox OS (gaia), takich jak galeria, przeglądarka używająca IndexDB. Możesz zobaczyć, jak działa w prawdziwym życiu.

Lub możesz użyć bardziej lekkiego interfejsu API window.localStorage, który działa jak słownik.

localStorage.setItem(key, value); 
localStorage.getItem(key); 

EDYCJA: Należy pamiętać, że localStorage nie jest zalecany, ponieważ blokuje główny wątek. Zamiast tego należy użyć gaia/shared/asyncStorage.

Dla XHR można sprawdzić Firefox-OS-Boilerplate-App na demo użyciem nagłówków XHR roboczego

+0

Chcę tylko podkreślić jedno ze zdań w powyższym komentarzu: ** użyj gaia/shared/asyncStorage **, jest to proste API, które ma zarówno zalety localStorage (to proste), jak i indeksu dB (jego wysoka wydajność). – Yoric

+0

dziękuję Podkreślam zdanie – gasolin

0

Można używać DataStore w Firefox OS przy użyciu magazynu danych można również udostępniać te dane z innych aplikacje i możesz także zezwolić innym aplikacjom na zapisywanie w składnicy danych.

można kliknąć ten link.

https://developer.mozilla.org/en-US/docs/Archive/Firefox_OS/API/Data_Store_API/Using_the_Data_Store_API

Tuż za korzystanie składnicę danych muszą aplikacja do certyfikacji.

navigator.getDataStores('mystore').then((store)=>{ 
    store[0].getLength().then((ln)=> console.log(ln)) 
})