2010-05-07 50 views
0

我目前正在重構我的webplayer,以便我們能夠更輕鬆地在我們的其他互聯網廣播電臺上運行它。這些播放器之間的大部分設置都非常相似,但有些需要有不同的UI插件/其他插件。如何設計應用程序爲模塊化/支持插件

目前在Web播放我做這樣的事在它的init():

_this.ui =新UI();

_this.ui.playlist = new Playlist();

_this.ui.channelDropdown = new ChannelDropdown();

_this.ui.timecode = ne Timecode();

etc etc

這工作正常,但阻止我在運行時需要這些對象。我想要做的是能夠根據車站需求添加這些功能。基本上我的問題是,我需要在這裏添加某種「addPlugin()」功能嗎?如果我這樣做,是否需要經常從WebPlayer對象中檢查該插件是否存在,然後再嘗試使用它?喜歡...

if(_hasPlugin('playlist'))this.plugins.playlist.add(track);

我很抱歉,如果其中一些可能不明確......真的試圖讓我的頭包裹所有這一切。我覺得我更接近,但我仍然堅持。任何意見,我應該如何繼續這一點將不勝感激。

由於提前,

回答

0

你需要,你希望別人能過的工作的應用程序中暴露的某些功能。 IE:在您的用戶界面和播放器等主要組件上公開獲取{} set {}訪問器。您公開的更多功能越多,插件將能夠修改您的功能的重要部分。

假設你有一個UI.header,並且頭部包含定義頭部如何顯示UI的屬性。因此,您將header.backgroundImage作爲公共字符串公開,將header.Text作爲公共字符串公開,並將header.height作爲公共int來公開。現在有人設計一個插件可以改變你的標題值,並讓它看起來並說出他們想要的。

這都是關於你希望人們能夠根據你所暴露的內容改變你的播放器。

0

您可以爲您的插件定義JavaScript類,將它們作爲依賴關係加載到網頁播放器,並在運行時根據需要在RequireJS AMD的幫助下實例化它們。

//in your webplayer.js 
define(['./ui','./playlist'],function(ui, playlist){ 
    var webPlayer = function(stationID){ 
    //initializing work 
    } 
    return webPlayer; 
}); 

在運行時在需要時加載webplayer.js文件並實例化Web播放器。

查看BoilerplateJS這是JavaScript產品開發的參考體系結構。關注事件處理,創建自包含組件,處理它們之間的交互,決定何時創建/顯示/隱藏UI組件等問題,以便快速開始開發。