天天看點

Chrome擴充開發指南(轉載)

我覺得不錯的學習路徑:

【基礎部分】

JS/CSS,JQUERY,這三個先學,JS則是那本【JAVASCRIPT進階程式設計第三版】比較不錯,然後可以學COFFESCRIPT,來寫面向對象的程式。不過我一直不太會寫OO的東西,是以,總是用元件化的方式繞過去的。

然後可以試試用所謂的測試驅動來進行疊代開發吧,我因為開發的都是小插件,是以,就懶得寫測試了。

然後就是HTML5的所有API,File API/剪貼闆的API/Audio API/Storage API/DOM的新變化等等。有興趣的還可以看看WebGL,CSS3川死佛母什麼的。

【API部分】

接下來看官方的教程就可以了,主要的開發模型其實很簡單就是background.html,與content.js或者是popup.html或者是options.html這幾個頁面之間的通訊。

結合上一篇的插件開發總結( http://www.douban.com/note/220782135/ ),建立的路線可以是,寫好ActivX插件一份。寫好NPAPI插件一份(最好還是用FireBreath來寫,當然,前提是不在于footprint的大小)。然後結合着擴充來進行開發,這是後話。

當然還可以把重度的API交給PEPPER API來搞定,但是注意PEPPER API當下也有許多問題。

【Web Worker】

CHROME的Web Worker能力比其他的強那麼一些,簡單的說,它可以傳指針給WORKER,主線程和WORKER線程之間可以共享記憶體,說白了就是。

NODE.JS的V8其實也繼承了這個能力

【調試】

盡可能得用console.log就可以了,這是要注意幾個小問題

1、background.html和popup.html裡寫的log你是直接看不到的,它們相當于是另一個網頁,是以需要使用通訊方式将資訊發到某個頁面然後LOG,你才能比較好的看到。

2、可以使用JS進階程式設計第二版裡的track技巧,(這其實也是一種安全上的攻擊技巧)

<img src='yourtrack.php?get=???'/>這類的東西來集中記錄資訊

3、還有就是注意一個細節,你在擴充開發頁面裡,點選重載?那有時候并不會有用的,特别是在你的manifest.json檔案變更了的情況下,最佳實踐是:關閉/啟動。這樣你才管事兒,然後用我下面提到的關于插件開發的插件裡的小工具重載插件就可以了。

【關于插件開發的插件】

1、快速重載插件的插件

這是我個人使用的一個小工具,最近打算加一些功能,是開發過程中比較好用的小工具

https://github.com/lemonhall/extension-reloader

使用:簡單的說就是在開發人員工具裡,得到你正在開發插件的唯一ID後,輸入到這個插件bg.html裡,然後首先重載這個extension-reloader,然後在開發的過程中,你隻需要點選右上方那個角落裡的CHROME圖示,就可以重載你指定ID的插件了。

接下來我有時間了,會改進這個東西,加一個popup.html,讓設定的過程更友好一些。

【對通訊模型的封裝】

https://github.com/attachmentsme/Queuebert

實驗性的項目,對網頁間的通訊進行了簡單的封裝,也許讓你寫起來更舒服,另外可以通過這個封裝,在background.html集中向某個前台的tabid發送console.log資訊,因為你要注意,background.html的console.log資訊是不會在前台看得到的。

【關于跨域的那點小事兒】

跨域從來都是惡心人的問題,讓我看來網際網路如此割據的首要因素啊,當然,安全還是要考慮的。

1、JsonP

這個是非常著名的問題,不僅僅是擴充開發者,而且是所有JS都需要面對的問題。

這個東西需要伺服器端支援,或者可以用NGINX将對方的服務包裝,或者是LIVE截取後動态加上[]号,然後加上CALLBACK來使用,方法很多,這是調用對方接口你必然會遇到的。

2、IFRAME拒絕加載

http://code.google.com/p/chrome-page-compare/source/browse/trunk/src/x-frame-options-workaround.js?r=10

使用WebRequest直接修改對方的HTTP頭資訊,就可以了。

【編譯C++并移植】

https://github.com/kripken/emscripten/wiki/_pages

用Emscripten項目,這個項目對檔案系統做了一層抽象,另外對移植SDL以及OPENGL庫很有用。

這不是我的領域,就不多說了。

【關于WebRTC】

當下的WebRTC還處于草案階段,我個人最關心的是Data API部分,可以無痛穿牆,傳輸資料。

視訊/音頻,的VoIP相關開發人員應該關注這些。 http://webp2p.org/

【Storage API】

http://brian.io/lawnchair/adapters/

對當下的所有的storage做了一個簡單的封裝,你不一定需要用它,但可以翻看一下源代碼,看看它為了照顧相容性所作出的,卓越的努力。

【DHT】

http://kadoh.fr.nf/

之是以把它加進來是,因為最近非常感興趣這個DHT技術。有興趣可以一起看看,可以給擴充增加通路DHT網絡的能力(當然不是擴充也可以)

繼續閱讀