我知道我們道場可以通過兩種方式創建的任何部件,dojo中編程式和聲明式創建的小部件之間的區別?
- 編程
- 聲明
創建插件程序,我們將使用JavaScript,而對於我們聲明將在HTML標籤中使用dojo屬性。
有人可以解釋我有什麼不同嗎?
哪一個是主要首選,爲什麼?
我知道我們道場可以通過兩種方式創建的任何部件,dojo中編程式和聲明式創建的小部件之間的區別?
創建插件程序,我們將使用JavaScript,而對於我們聲明將在HTML標籤中使用dojo屬性。
有人可以解釋我有什麼不同嗎?
哪一個是主要首選,爲什麼?
那麼,這兩種方式之間有一定的差異。在聲明性方式中,所有配置都基於HTML屬性,如dojo-data-props
,但也包含一些其他屬性,如值,標題等。所以你創建的DOM節點實際上是作爲某種佔位符的。
當您通過編寫JavaScript代碼創建小部件時,您將不得不提供您將附加它的DOM節點,但最大的區別是它不會從該DOM節點複製HTML屬性。此處的DOM節點僅用作容器,而不是佔位符。
沒有解決方案,主要是首選,它通常取決於應用程序的需求,你認爲什麼是發展的最徹底的方法。
我個人喜歡聲明性標記,因爲最終它是用戶界面的一部分。但是,你可以儘可能地去。我已經看到人們以聲明的方式創建商店和小部件事件處理程序,但我個人更喜歡用JavaScript編寫它們,因爲它們不是用戶界面的一部分。
還有其他原因可能會改變您創建窗口小部件的方式。例如,聲明性標記的最大缺點之一是您需要解析頁面(例如使用parseOnLoad
)。這通常比以編程方式創建小部件要慢。你可以通過只解析某些DOM節點來改進它,但是你必須編寫額外的代碼(並且它不會更快)。
只是一個小紙條;這並不意味着聲明方式很慢。這只是一個額外的操作,應該執行,因此,它有點慢,但最終用戶甚至不會看到差異。
然而,聲明性方式的一個優點是,加載頁面時,最終用戶能夠看到佔位符。如果您選擇了正確的佔位符(例如,爲dijit/form/FilteringSelect
和dijit/form/ComboBox
),最終用戶至少會看到一些信息。如果以編程方式創建所有內容,最終用戶將看到一個空白頁面,直到執行JavaScript代碼。
所以如果性能是要求之一,那麼你可以選擇以編程方式創建它們。如果您希望在業務邏輯中分離表示層的代碼分離,那麼我會建議使用聲明性方式。
但最終,兩種解決方案都很好。