2011-04-23 26 views
5

Por ejemplo, digamos que queremos guardar una lista de URL y esta lista se actualiza dinámicamente. Las siguientes son las formas en que veo que esto se puede hacer.
1) Conservar en un archivo de texto
2) Salvo en una base de datos SQLite
3) a excepción de una preferencia (sé que las preferencias son para almacenar las preferencias pero ¿hay alguna desventaja de usar una preferencia?)
Mejor método para guardar datos en un complemento de Firefox

¿Cuál es el mejor método para guardar datos relacionados con un complemento de Firefox? Si una respuesta genérica no es posible, ¿cuál es el mejor método para una situación como la del ejemplo anterior? ¿Y por qué crees que ese método es apropiado y otros no?

Respuesta

9

Las preferencias son simples y livianas, pero sus requisitos de almacenamiento podrían superar las preferencias. SQLite es bueno para conjuntos más grandes de datos que necesitan capacidades de consulta rápidas. Me parece que usar el almacenamiento basado en archivos es simple y efectivo. Solo asegúrese de usar asincronización de E/S siempre que sea posible.

Guardar los datos en un archivo de texto JSON (u otro formato) es una tarea sencilla. La tienda de sesiones de Firefox hace lo mismo. Al guardar, use la ubicación de la carpeta de perfil, tal vez incluso haga una subcarpeta.

MDN tiene notas en la búsqueda de la carpeta del perfil y la lectura/escritura de un archivo de texto:

Usted puede utilizar el componente nsIJSON en versiones anteriores o el incorporado en objeto JSON en versiones actuales de Firefox: https://developer.mozilla.org/en/JSON

+1

Se recomienda utilizar OS.File para leer y escribir archivos ahora: [OS.File] (https://developer.mozilla.org/en-US/docs/JavaScript_OS.File/OS.File_for_the_main_thread) – Noitidart

1

simple-storage

El módulo de almacenamiento simple exporta un objeto llamado almacenamiento que es persistente y privado para su complemento. Es un objeto JavaScript normal, y puedes tratarlo como lo harías con cualquier otro.

para almacenar un valor, simplemente asignar a una propiedad en el almacenamiento:

var ss = require("sdk/simple-storage"); 
ss.storage.myArray = [1, 1, 2, 3, 5, 8, 13]; 
ss.storage.myBoolean = true; 
ss.storage.myNull = null; 
ss.storage.myNumber = 3.1337; 
ss.storage.myObject = { a: "foo", b: { c: true }, d: null }; 
ss.storage.myString = "O frabjous day!"; 

Puede almacenar array, boolean, los valores de número, objeto, nulos, y de cadena. Si desea almacenar otros tipos de valores, primero deberá convertirlos a cadenas u otro de estos tipos.

Cuestiones relacionadas