例如,假设我们要保存一个URL列表,这个列表会动态更新。以下是我认为可以做到这一点的方法
1)保存在文本文件中
2)保存在SQLite数据库中
3)保存在首选项中(我知道首选项用于存储首选项,但使用首选项有任何缺点吗?)
保存与Firefox插件相关的数据的最佳方法是什么?如果无法得出通用答案,那么上述例子的最佳方法是什么?为什么你认为这种方法是合适的而其他方法不合适?
答案 0 :(得分:9)
首选项简单轻巧,但您的存储要求可能会超出首选项。 SQLite适用于需要快速查询功能的大型数据集。我发现使用基于文件的存储简单有效。只要确保尽可能使用异步I / O.
将数据保存为JSON(或其他格式)文本文件是一件简单的事情。 Firefox会话存储也做同样的事情。保存时,使用配置文件文件夹位置,甚至可以创建子文件夹。
MDN有关于查找个人资料文件夹和读/写文本文件的说明:
您可以在旧版本中使用nsIJSON
组件或在当前版本的Firefox中使用内置JSON对象:https://developer.mozilla.org/en/JSON
答案 1 :(得分:1)
<强>简单的存储强>
简单存储模块导出一个名为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!";
您可以存储数组,布尔值,数字,对象,空值和字符串值。如果您想存储其他类型的值,则首先必须将它们转换为字符串或其他类型的值。