2012-09-24 50 views
0

那麼,我基本上是探索淘汰賽,並瞭解它所提供的不同功能。我真的很喜歡模板和兩種方式綁定,並用它進行一些觀察。現在,它已在我們公司最近爲may模塊實施,但是關於事件是如何驅動的,以及它有多美麗,有一個非常大的討論。Knockout是否完全由事件驅動?

那麼,當他們認爲這是非常事件驅動的時候,他們會對JQuery進行攻擊。他們的觀點是,在JQuery中,任何人都可以在任何地方進入並綁定按鈕的onClick,並且在沒有爲所有控件的所有事件保持在同一地點並且使代碼難以管理的標準時有時會變得混亂。

我的觀點是,可能是JQuery需要顯式管理代碼來實現這一點,但事件驅動的編程不是獨佔的東西? asp.net網頁有它的代碼背後多年,以及古代JavaScript與所有的OnClick事件怎麼樣?

我在這裏錯過了什麼嗎?

回答

2

井事件並不是新事物。自按鈕控件開始以來,它應該以某種方式存在。但區別在於事件是如何使用的以及您的可維護性如何。

關於jQuery和Knockout,我不認爲這是一個事件的問題,而是一個設計模式的問題。 jQuery使用事件(在某些情況下使用更多的代碼),但它沒有指定要使用的特定模式。另一方面,KnockoutJS帶有雙向數據綁定的MVVM模式,這將爲您提供編寫複雜應用程序所需的結構。

在我看來,使用模式肯定會增強您的代碼可維護性。你甚至可以用普通的jQuery實現MVVM,MVC或MVP。但是,這將需要更多的努力,因爲jQuery沒有專門爲此工作。例如,如果您使用BackboneJS,它可讓您在MVC模式中組織代碼,並且您可以使用jQuery進行事件綁定。

根據用例,每個庫都有自己的地方。對於簡單的單向事件處理,您可能不需要基本的視圖模型,但只需使用jQuery即可完成。但對於具有高雙向消息傳遞的複雜用戶界面,淘汰賽將用較少的代碼來完成任務。

其他情況也是如此......敲除需要您用自定義屬性來篡改HTML。如果更改HTML不適合你,該怎麼辦? jQuery在那裏有更好的用例。根據用例使用jQuery,Knockout,Backbone或BoilerplateJS ..不僅僅因爲有人認爲它很酷:)