我在很多ASP.NET webforms項目中工作。由於我不是一個回發的粉絲,我傾向於寫很多jquery ajax調用來處理靜音 - >服務器調用。構建javascript/jQuery
但是,腳本標記/ JavaScript文件中的大部分邏輯通常很快就會變得雜亂無章,即使我嘗試使用很多函數並模擬類也是如此。我應該補充說,99%的代碼是jquery,而不是「純粹的」javascript。
所以我想知道你們是如何處理這個問題的。我不能是唯一一個:-)在此先感謝
我在很多ASP.NET webforms項目中工作。由於我不是一個回發的粉絲,我傾向於寫很多jquery ajax調用來處理靜音 - >服務器調用。構建javascript/jQuery
但是,腳本標記/ JavaScript文件中的大部分邏輯通常很快就會變得雜亂無章,即使我嘗試使用很多函數並模擬類也是如此。我應該補充說,99%的代碼是jquery,而不是「純粹的」javascript。
所以我想知道你們是如何處理這個問題的。我不能是唯一一個:-)在此先感謝
我真的很喜歡「不顯眼的JavaScript」方法,其中你加載了幾乎所有的靜態JavaScript/jQuery代碼在捆綁,縮小,緩存的JavaScript文件,然後您可以在您的HTML元素上使用類和「數據」註釋來標記它們以執行某些操作。編寫javascript是爲了掃描您的DOM以查找這些標誌並據此設置其邏輯行爲。
此方法有助於強制您將JavaScript組織到邏輯模塊中,這有助於減少重複性代碼。它將HTML從HTML中分離出來。
唯一要小心的是,動態加載的內容也需要進行掃描,所以任何時候你AJAX提供的內容添加到DOM,確保您調用您的掃描方法上添加的元素。
我喜歡爲每個表單或用例定義JS類。該類爲事件處理程序和行爲提供了頁面連接。然後,當頁面加載時,它會實例化或調用JS類上的init()方法以逐步增強它。
例如,登錄頁面可能會引用名爲Account_LogOn.js的JS文件。在頁面底部,可以調用myApp.logon.init(),其中myapp是登錄類的「名稱空間」。
然後,init()調用爲表單提交事件添加一個處理程序,以執行客戶端驗證或其他任何您想要的操作。
我在Mindscape VS插件中使用Coffeescript。它迫使你將自己的文件保存在單獨的客戶端可破解文件中,最終打破了我在這裏擔心的壞習慣。檢查一下,它是免費的,Coffeescript很有趣。 – asawyer 2012-02-28 21:20:36
我目前對[Backbone JS](http://documentcloud.github.com/backbone/)很感興趣。關於它的一個好處是你可以選擇你使用它的東西。這不是一種「全部或沒有」的東西。最近還有一個關於它的最近的[Herding Code podcast episode](http://herdingcode.com/?p=390),這非常有趣。 – 2012-02-28 21:24:07