Angular4 - component和directive的區(qū)別

指令

在AngularJS 1.x版本很重要的一個部分 - 指令,用過AngularJS的同學(xué)都不陌生(這是廢話)。也寫過很多自定義指令。如果你學(xué)習(xí)了Angular2或者以上版本(后文我們就特指Angular4),可能會覺得Component就是之前的指令,那么問題來了,Angular4中的component和directive有什么區(qū)別?本文將詳細(xì)的對比二者區(qū)別;

AngularJS1.x中指令用法

AngularJS1.x版本中的指令具有2個用法

(1)在已經(jīng)存在的dom元素上添加一些行為

(2)創(chuàng)建一個組件,附上一些行為

明確劃分

在Angular4(在Angular2中就有,再次說明下,后面為了不再繁瑣的說Angular2或者Angular4,統(tǒng)一稱為Angular4) 中將二者明確的劃分出來,component的用途是創(chuàng)建一個組件并附上一些行為,而directive則是在已經(jīng)存在的dom元素上附加一些行為;二期詳細(xì)區(qū)別如下:

(1)component使用的注解@Component修飾,directive使用注解@Directive來修飾

(2)component是通過組件化思想,基于組件來創(chuàng)建應(yīng)用,把應(yīng)用劃分成細(xì)小的各個可重復(fù)使用的組件,遵循DRY原則(Don't repeat youself?。?,directive是用來在已經(jīng)存在的dom元素上實(shí)現(xiàn)一些行為

(3)component是可重復(fù)使用的組件,directive是可重復(fù)使用的行為

(4)component有創(chuàng)建一個視圖view,即有template或者templateUrl,directive則沒有。

舉例說明:

下圖是一個指令,用以實(shí)現(xiàn)元素的“有無”,通過指令*showAuthed=“true/false”來實(shí)現(xiàn)不同權(quán)限狀態(tài)下改dom元素的有無;可重復(fù)使用,這指令可以放在應(yīng)用中的任何一個已存在的dom元素上,來根據(jù)權(quán)限狀態(tài)來控制元素的有無,非常方便

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容