Лучший способ сохранить данные в дополнении Firefox - PullRequest
6 голосов
/ 23 апреля 2011

Например, допустим, мы хотим сохранить список URL-адресов, и этот список обновляется динамически. Ниже приведены способы, с помощью которых я вижу, что это можно сделать.
1) Сохранить в текстовом файле
2) Сохранить в базе данных SQLite
3) Сохранить в настройках (я знаю, что настройки предназначены для сохранения настроек, но есть ли какой-либо недостаток в использовании настроек?)

Каков наилучший способ сохранения данных, связанных с надстройкой Firefox? Если общий ответ невозможен, каков наилучший метод для ситуации, подобной примеру выше? И почему вы считаете, что такой метод подходит, а другие нет?

Ответы [ 2 ]

9 голосов
/ 23 апреля 2011

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

Сохранение данных в текстовый файл JSON (или другой формат) - это простая вещь.Хранилище сессий Firefox делает то же самое.При сохранении используйте расположение папки профиля, возможно, даже создайте подпапку.

В MDN есть примечания по поиску папки профиля и чтению / записи текстового файла:

Вы можете использовать компонент nsIJSON в более старых выпусках или во встроенном JSONобъект в текущих выпусках Firefox: https://developer.mozilla.org/en/JSON

1 голос
/ 30 октября 2014

simple-storage

Модуль простого хранилища экспортирует объект с именем storage, который является постоянным и закрытым для вашей надстройки.Это обычный объект JavaScript, и вы можете обращаться с ним так же, как с любым другим.

Чтобы сохранить значение, просто присвойте его свойству в хранилище:

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!";

Вы можете сохранить массив, логическое, число, объект, нулевые и строковые значения.Если вы хотите хранить другие типы значений, вам сначала нужно преобразовать их в строки или в другой тип.

...