以我自己的經驗,我喜歡編程編碼。在這裏舉幾個好處:Dojo項目中的聲明性編碼或編程編碼?
- 更好的表現:無需解析。
- 無法在html和javascript之間切換:無html,代碼中的所有內容(使用css控制佈局)。
- 易於動態更改內容。
- 易於閱讀和維護。
但是,它使用聲明性編碼在這裏接觸了很多用戶。我的問題是:使用聲明性編碼有什麼好處?哪一位是道場大師的最愛?
以我自己的經驗,我喜歡編程編碼。在這裏舉幾個好處:Dojo項目中的聲明性編碼或編程編碼?
但是,它使用聲明性編碼在這裏接觸了很多用戶。我的問題是:使用聲明性編碼有什麼好處?哪一位是道場大師的最愛?
就像fransisco說的那樣,你可以更容易地分離你的代碼。我的意思是,如果你在你的JavaScript代碼中實例化所有的小部件,你的JavaScript將變得非常大,並且你的HTML通常會很小(只包含用於放置小部件的「容器」節點)。
更好的性能:我同意你的看法,因爲你必須分析你的整個頁面,它確實降低了性能,但您可以通過禁用parseOnLoad
和解析只有你實際需要的DOM節點優化這一點。在我工作的公司,我們通過將一個<div>
中的所有Dojo小部件標記放在一個特定的類名中。然後,在我們的JavaScript代碼,我們做這樣的事情:
query(".containsDojo").forEach(node) {
parser.parse(node);
});
HTML和JS之間無開關:HTML之間的切換和JS使得它更容易理解你的代碼,並有一個背景。例如,如果您需要通過放置在名爲C.html的頁面上的小部件B來修改小部件A.然後很容易找到你的小部件A,因爲你知道它在哪個頁面上以及它的位置(頂部,底部,...)。如果將所有內容都放入JavaScript文件中,那麼您將很難管理代碼,因爲您不知道小部件在什麼情況下被初始化。您必須查看整個JavaScript代碼,因爲可以在代碼中的任何位置初始化該小部件。
易於動態更改內容如果您需要動態內容,我通常會自己創建某種小部件,並將JavaScript邏輯放在那裏,以便我的「主」JavaScript和HTML代碼看起來很乾淨。您始終可以使用dijit/registry
模塊更改內容中的某些內容。
易於閱讀和維護:我完全不同意這一點,類似於我在前一段中介紹的有關HTML和JavaScript之間切換的內容。我的意思是,dijit/form/TextBox
和普通的HTML輸入字段有什麼區別?不多,它們都是UI項目。然而,如果我按照你的想法,我會把TextBox放在JavaScript代碼的某個地方,並把你的HTML中的普通HTML輸入字段。 HTML不僅爲您提供上下文,還集中了所有UI元素。
我不能完全同意你的解釋。在我目前的項目中,我們只使用編程的dojo來插入小部件。以這種方式使用它有幾個優點:你可以在dojo小部件周圍編寫包裝。如果一個屬性會改變,你只需要在一個文件中編輯它。理論上你可以從一個工具包/框架切換到另一個。你提到「很難管理這麼大的JavaScript文件」的原因似乎對我來說並不合法。這是一個架構問題。我們使用MVC(f)設計模式並分割每個文件。我創建了一些動態加載器來加載 – GuyT
單獨的文件,以便代碼非常乾淨(和簡短)。我給了你一個'+'的努力和解釋,雖然 – GuyT
如果你使用的是MVC,那麼聲明性的widget標記在我看來會變得更加重要。您的控制器應該只處理用戶操作,它不應該關心按鈕或小部件,這是視圖的用途。如果你需要一些複雜的行爲,你確實可以使用程序化的小部件,但我會把它們包裝在一個獨立的小部件中,我會使用聲明式的。這與其他JS MVC框架如何工作類似,如AngularjS和指令或Ember.js和組件。 – g00glen00b
利益分離。另外,我不認爲你的問題適合SO。 –
而且,我認爲這個詞是「命令式編程」,而不是「編程式編碼」。 – Stewie
@ francisco.preller:我在問道場項目。我懷疑你理解我的問題。顯然你沒有足夠的經驗來使用dojo。我很欣賞迪米特里,他的回答幫了我很多。 –