2017-09-02 75 views
0

我的問題是關於很好的做法寫角4Angular4 - 乾淨的代碼,如何不重複的代碼

乾淨的代碼,我有兩個組成部分 - 客戶端和主機,它們很相似,都有一些<video>元素,並且兩者都具有類似的代碼來處理這個<video>元素。

那麼,什麼是實現這一點沒有在這兩個組件重複代碼的最佳方式?

請記住,如果我將創建例如視頻分量另一個組件,然後我會在這<video>我必須提供一些公共功能開啓,關閉攝像頭,麥克風,開始流,關閉流,等... 我必須在我的新視頻組件中從客戶端/主機組件運行一些功能。在角

+0

如果您使用的是打字稿,您可以創建一個基類和兩個派生類。 – dkarchmer

+1

這是一個非常普遍的問題。但是如果你有一個或多或少在多個地方使用過的組件,比如具有增強功能的視頻播放器,那麼你應該創建一個包裝它的組件,以便它可以被重用和定製到一般的輸入中(比如源url)並廣播消費者處理的一般輸出事件(如視頻暫停或某事)。您還可以直接或通過共享服務公開消費者可以使用的功能。 – bryan60

回答

2

重用代碼通過服務完成。您可以通過在組件的構造函數中列出其他組件中的注入服務。

角將尋找通過服務提供商樹和注入服務的實例爲您服務。根據您是否想要單個服務或每個組件實例的單獨服務實例,您可以在模塊或組件中提供服務。

組件中的代碼應該是非常精簡,只包含很瑣碎的功能和一些狀態變量(雖然連州是首選與obserbavles取代但那是另一個話題)。

這種模式有利於在組成傳承與它在一個基於原型語言的效果要好得多,至少如JavaScript(和打字稿)等。它允許您從多個服務中構建功能,而不僅僅是一個基類。

2

角度是關於粒度。你應該建立類似「共同框架」爲你的應用程序,你將包括通用組件服務爲整個應用程序。通用組件被稱爲嵌套組件示例:視頻播放器,投票星等您specyfi所有常見的嵌套組件和服務,你只需通過在角依賴注入容器中建立來解決它們,以便隨時使用它們。 (就像@LazarLjubenović寫道)。

第二種類型的組件被稱爲可路由組件當您希望擁有應用程序的重要組成部分時,您正在使用它們。 對於例如:歡迎頁面,詳細信息頁面等

除此之外你應該首先檢查是Angular2 style guide。你可以找到有關良好實踐的非常重要的信息。