Database 在Firefox加载项中保存数据的最佳方法

Database 在Firefox加载项中保存数据的最佳方法,database,file,firefox-addon,storage,preferences,Database,File,Firefox Addon,Storage,Preferences,例如,让我们假设我们想要保存一个URL列表,并且这个列表是动态更新的。以下是我认为可以做到这一点的方法。 1) 保存在文本文件中 2) 保存在SQLite数据库中 3) 保存在首选项中(我知道首选项用于存储首选项,但使用首选项有什么缺点吗? 保存Firefox插件相关数据的最佳方法是什么?如果不可能给出一般性的答案,那么针对上述情况的最佳方法是什么?为什么你认为这样一种方法是合适的,而其他方法则不合适 首选项简单且轻量级,但您的存储需求可能会超过首选项。SQLite适用于需要快速查询功能的较大数

例如,让我们假设我们想要保存一个URL列表,并且这个列表是动态更新的。以下是我认为可以做到这一点的方法。
1) 保存在文本文件中
2) 保存在SQLite数据库中
3) 保存在首选项中(我知道首选项用于存储首选项,但使用首选项有什么缺点吗?


保存Firefox插件相关数据的最佳方法是什么?如果不可能给出一般性的答案,那么针对上述情况的最佳方法是什么?为什么你认为这样一种方法是合适的,而其他方法则不合适

首选项简单且轻量级,但您的存储需求可能会超过首选项。SQLite适用于需要快速查询功能的较大数据集。我发现使用基于文件的存储既简单又有效。只要确保尽可能使用异步I/O即可

将数据保存到JSON(或其他格式)文本文件是一件简单的事情。Firefox会话存储也做同样的事情。保存时,使用配置文件文件夹位置,甚至可能创建子文件夹

MDN有关于查找配置文件文件夹和读/写文本文件的说明:


您可以在旧版本中使用
nsIJSON
组件,也可以在当前版本的Firefox中使用内置JSON对象:

简单存储

简单存储模块导出一个名为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!";

可以存储数组、布尔值、数字、对象、空值和字符串值。如果要存储其他类型的值,首先必须将其转换为字符串或其他类型的值。

建议现在使用OS.File进行文件读写: