Google chrome extension 存储chrome.storage配置文件的最佳方式

Google chrome extension 存储chrome.storage配置文件的最佳方式,google-chrome-extension,Google Chrome Extension,嗯。也许不是最好的,但相信这可能是搜索引擎更好的标题 使用chrome.storage保存配置文件,通常如下所示: chrome.storage.sync.save( { profiles: [ { id : profile1, foo : 42, bar : 2.71828 }, { id :

嗯。也许不是最好的,但相信这可能是搜索引擎更好的标题

使用
chrome.storage
保存配置文件,通常如下所示:

chrome.storage.sync.save(
    { 
        profiles: [
            {
                id : profile1,
                foo : 42,
                bar : 2.71828
            }, {
                id : profile2,
                foo : 3.14,
                bar : 1.618033
            }, …
        ],
        current_profile : 'profile2'
    }
);
这有一些问题

首先,我必须在“选项”页面的每次保存中更新整个配置文件。我不能说save
profile[32]
,但必须说save
profiles
。虽然一个人需要有相当大的个人资料设置和很多,这是一个问题,我不喜欢强迫坏风格

我可以将每个概要文件保存在root中,但这感觉就像在Ecma中使用
x^n
public
var

在内容脚本中使用这些值时,这也会带来一些问题

  • 从后台脚本请求存储
  • 后台脚本接收请求并执行异步查找
  • 响应时将结果报告回内容脚本
  • 如果我选择一个模型,在该模型中,我将每个概要文件存储在根目录下,而不是作为一个数组,那么我必须在几个单独的回合中异步执行上述操作。首先获取当前的_配置文件,有一个回调函数,然后请求该键,第三个回调函数向启动器报告结果。这是非常复杂的,会导致额外的代码负载

    到目前为止,我保存了保存id的当前\u profile\u id和保存profiles数组中条目副本的当前\u profile,这样我就可以在内容脚本中请求当前内容,但这也很难看,因为它只会在请求时强制在根级别进行重复

    在每一个级别上,检索、同步或更新存储的复杂性,更重要的是,冗余是一个稍高的因素


    我在设计过程中遗漏了什么吗。有更好的方法解决这个问题吗?

    我认为在回调函数的回调函数中调用回调函数没有什么问题。这一切都很好而且是异步的,那么问题是什么呢?“它是丑陋的,复杂的,在etra代码加载时会产生结果”:1。如果你干涸了你的代码,你提到的“额外代码”只不过是几行(这是可以忽略不计的)。2.我看不出这里的复杂性(特别是因为你已经解决了这个问题)。3.我并不觉得它难看——我觉得它很可爱(更不用说在callbac的回调中调用回调是多么的酷了)!顺便说一句,您可以直接从内容脚本的上下文访问
    chrome.storage
    ,这样您就不必向后台页面发送消息来为您执行此操作。