Frameworks google chrome扩展-添加模块/插件

Frameworks google chrome扩展-添加模块/插件,frameworks,google-chrome-extension,modularity,Frameworks,Google Chrome Extension,Modularity,我开始为google chrome开发一个扩展,我很快意识到几乎必须要有某种模块化 然而,我不确定最好的方法是什么 理想情况下,插件应该很容易创建和发布/共享,即使对于非专家(给定某种API),所以我宁愿避免使用其他chrome扩展(带有消息传递等) 我已经阅读了相当一部分的文档,到目前为止还没有找到太多有用的信息,所以欢迎任何想法 已更新 对不起,如果我没有尽可能地说清楚。 主要问题是: 共享传统代码(“插件”),而不修改/更新扩展 允许使用自定义代码而无需公开托管(私人托管或存储和评估?)

我开始为google chrome开发一个扩展,我很快意识到几乎必须要有某种模块化

然而,我不确定最好的方法是什么

理想情况下,插件应该很容易创建和发布/共享,即使对于非专家(给定某种API),所以我宁愿避免使用其他chrome扩展(带有消息传递等)

我已经阅读了相当一部分的文档,到目前为止还没有找到太多有用的信息,所以欢迎任何想法

已更新

对不起,如果我没有尽可能地说清楚。 主要问题是:

  • 共享传统代码(“插件”),而不修改/更新扩展
  • 允许使用自定义代码而无需公开托管(私人托管或存储和评估?)
  • 虽然这两点相互矛盾,但如果不是谷歌扩展中实现的安全模型,以合理的方式实现仍然是完全可能的

    从扩展(内容脚本)中调用外部代码似乎不可能通过常规方式实现,也不可能从网页上下文访问扩展

    新更新的

    最近没有足够的咖啡。。。我希望这已经足够清楚了,我再次道歉

    我基本上有两种选择:

  • 在扩展内容脚本的上下文中运行新代码(从源代码或url)(不知道如何运行)
  • 在网页的文档中注入新代码并实现消息传递——我已经研究了HTML5的MessageEvent,它可以工作,但是需要做很多额外的工作
  • 感谢您的评论,我相信我已经大致涵盖了这一点:

    • 在接收脚本请求的后台页面中使用侦听器(URL为x源)
    • 在清单(“选项卡”、“http://”)中设置适当的权限
    • 使用localStorage进行缓存
    • 使用chrome.tabs.executeScript运行代码,就像运行扩展的一部分一样

    • 允许用户添加新代码(到本地存储)

    • 托管某种“plugins.json”文件(描述版本、url等),以便为所有用户发布新内容

    很抱歉,不清楚您想要实现什么目标。模块化到底是什么意思?我有一个主要的“核心”脚本,我需要向它添加随机功能。为此,我构建了几个类和一个最小的API,但我的问题是如何真正“链接”到新的用户代码,发布它,或允许用户添加自己的代码…jcinacio,你的问题很模糊,但听起来你好像在试图创建一个类似于Style/Userstyles、Greasemonkey/Userscripts、Google Chrome Extensions的系统,甚至Firefox插件?听起来您希望您的扩展从公共存储网站获取代码,并使用
    localStorage
    (或让用户直接将代码输入本地存储)保存所述代码。然后,您可以在需要时将代码作为内容脚本注入。
    eval()
    是解析以字符串形式存储的js(在localStorage中?)时首先想到的。如果你有一个脚本的url,那么你总是可以从中创建
    标记,或者在内容脚本中执行它(有用于此的chrome api)。你可以使用
    chrome.tabs.executeScript()
    而不是
    eval()
    。但是,如果您希望网页的注入内容脚本与您的背景页面通信,则需要进行消息传递: