2013-09-21 4 views
1

Matin,Une bonne façon pour l'extension Firefox de conserver des données

Mon extension Firefox va produire, conserver et utiliser des données textuelles. Pour l'instant, je ne vais pas l'avoir synchronisé entre Firefox sur différents ordinateurs. Tout ce dont j'ai besoin est d'écrire des données dans un fichier texte et de les extraire. Dans cet esprit, mes questions sont:

  1. Où dois-je conserver ces données? Je veux dire, dans le dossier <profile>/extensions, j'ai mon fichier *.xpi (qui est une sorte de fichier zip) et je n'ai pas de dossier dédié pour mon extension. Dois-je créer un dossier spécial et conserver mes données dans le fichier texte de ce dossier? Ou existe-t-il d'autres moyens plus appropriés de le faire?

  2. Mes données va être comme ceci:

key1, value1, value2, value3, value4 
key2, value1, value2, value3, value4 
key3, value1, value2, value3, value4 

Pourriez-vous s'il vous plaît recommander la meilleure façon d'écrire/lire ces chaînes? Typique écrire/ajouter/lire en JavaScript pur, ou en utilisant JSON ou quelque chose comme ça?

Merci, Racoon

Répondre

3

Il est courant de conserver les données dans le dossier de profil aka. ProfD:

Components.utils.import("resource://gre/modules/FileUtils.jsm"); 

// get the "data.txt" file in the profile directory 
var file = FileUtils.getFile("ProfD", ["data.txt"]); 

Voir aussi la File I/O Snippets page pour plus d'informations.

Si vous avez plus de deux fichiers, il serait judicieux de créer un sous-dossier dédié dans ProfD pour votre extension.

Ne pas conserver les données dans extensions/! Cela pourrait perturber le gestionnaire de modules complémentaires. De même, lors de la création d'extensions décompressées, ne conservez pas de données dans le répertoire de l'extension, car ce dossier sera effacé lors des mises à jour.

La façon dont vous écrivez les données dépend de vous. SQLite (Storage) peut être exagéré pour un couple de chaînes, mais très bien si vous avez beaucoup de données (multi-mégaoctets) et aussi désirez des recherches aléatoires rapides. Un fichier texte brut, ou JSON.stringify données codées pourrait être mieux. De plus, si vos données sont assez "petites", vous pouvez utiliser le service de préférences à la place et éviter d'avoir à manipuler des fichiers réels.

BTW: Vous pouvez relire assez facilement du texte (JSON) et/ou des données XML à partir du système de fichiers en utilisant XMLHttpRequest s (mais vous ne pouvez pas l'utiliser pour écrire des données, bien sûr).

Les modules complémentaires SDK peuvent toujours utiliser le fichier d'E/S ci-dessus (le module SDK io/file est trop limité pour l'instant pour utiliser IMO). Le SDK propose également des modules dédiés indexed-db et simple-prefs.

1

SQLite is built in aux versions récentes de Firefox à utiliser comme mécanisme de stockage de données. Plus d'informations et des exemples d'utilisation de l'API wrapper FF peuvent être trouvés sur MDC.

Une autre option pourrait être d'utiliser Local nsIFiles pour conserver les données.

1

Le moyen le plus simple est d'utiliser localStorage.Firefox crée le stockage dans le dossier de profil et le supprime automatiquement une fois que l'utilisateur a désinstallé l'addon. Comme un effet secondaire, vous pouvez réutiliser votre code pour les extensions chrome et safari

Questions connexes