在Chrome扩展内容脚本中使用Google Closure库

3
我将尝试在Chrome扩展程序的内容脚本中使用Google Closure库。
这是在manifest.json中content_scripts的样子。
 "content_scripts": [
    {
        "matches": ["<all_urls>"],
        "js": [
                "closure-library/closure/goog/base.js",
                "content.js"
              ]
    }

我收到以下错误信息:

我遇到了以下错误:

goog.require could not find: goog.dom 

我认为一种选择是使用closure-builder将content.js与closure代码编译,并使用单个输出文件,但我需要在每次更改content.js后执行此操作。

有没有其他方法在内容脚本中使用closure库?

编辑:
即使我使用closure-builder方法,它也不能正常工作。它试图在当前网页所在的域中查找deps.js。例如,在google.com的情况下,我会收到以下错误消息:

GET https://www.google.co.in/deps.js 404 (Not Found)
goog.writeScriptTag_
goog.importScript_ 
(anonymous function)
1个回答

1
为了在我们的Chrome扩展中使用闭包库,我们创建了一个空的source.js文件,该文件仅包含我们所需的所有闭包库模块。
示例 source.js(source.js位于myproject目录内)。
goog.provide('myproject.start')
goog.require('goog.dom');
goog.require('goog.dom.query');
goog.require('goog.net.XhrIo');

然后我们使用closure-builder对该文件和closure-library源代码进行处理,生成一个包含我们所需的所有closure库模块相关源代码的单个输出文件。

相关命令:

closure-library/closure/bin/build/closurebuilder.py \
  --root=closure-library/ \
  --root=myproject/ \
  --namespace="myproject.start"
  --output_mode=compiled
  --compilation_level=SIMPLE_OPTIMIZATIONS

请注意,如果使用ADVANCED_OPTIMIZATIONS,所有未使用的函数都将被剥离,这不是我们想要的。
在manifest.json中包含此内容。
"js": [
                "compiled.js",
                "content.js"
              ]

所以,只有当我们需要从closure-library代码中包含一些新模块时才需要生成compiled.js,这种情况很少发生,不是每次更改content.js都需要这样做。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接