2013-08-29 90 views
3

我想在Chrome擴展的內容腳本中使用google封閉庫。在Chrome擴展內容腳本中使用google封閉庫

這是content_scripts看怎麼樣在的manifest.json

"content_scripts": [ 
    { 
     "matches": ["<all_urls>"], 
     "js": [ 
       "closure-library/closure/goog/base.js", 
       "content.js" 
       ] 
    } 

我得到下面的錯誤:

goog.require could not find: goog.dom 

我想,一個選擇是使用封閉建設者編譯內容。 js與封閉代碼並使用單個輸出文件,但我需要在content.js中的每次更改後都這樣做。

是否有任何其他方式在內容腳本中使用閉包庫?

編輯:
即使當我使用閉包生成器的方法,它不能正常工作。它試圖在當前網頁所在的域名上查找deps.js。例如。在google.com的情況下,我得到錯誤信息如下:

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

回答

1

爲了使用封庫在我們的瀏覽器擴展程序,我們創建了一個空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/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" 
       ] 

所以,我們需要生成compiled.js只有當我們需要包括從封庫的代碼,每次我們改變我們的內容時,一些新的模塊,這是罕見的,而不是。 JS。

相關問題