Angular.js 和 ASP.NET MVC 4 [關閉]
我有一個 ASP.NET MVC 4 項目,但我一直在決定使用 Angular.js 或 Knock.js 的 JavaScript 框架或庫的架構上。我目前傾向於使用 Angular.js 而不是 Knockout.js,但不想在項目開發過程中發現我犯了一個錯誤。
這裡有一些背景:
- 我們需要雙向模型數據綁定
- 我們需要測試視圖的能力。我希望能夠進行端到端的單元測試。此外,我們正在使用持續集成。
- “保存更改”功能。即,如果使用者在頁面上進行更改,我們需要能夠檢測任何更改並提示使用者在離開頁面之前保存更改
- “通知”功能。即使用者將登錄大約 8 小時,並且需要通知和更新其他使用者所做的更改(錯誤、數據狀態更改等)
- 我們需要“未來證明”我們的應用程序。目前業務部門還沒有決定我們是否需要支持移動設備,但我知道這只是時間問題。
- 我們的團隊由具有不同經驗水平的開發人員組成,從初級到高級開發人員。
- 目前我們的模型很複雜,可能會更複雜
- 我們還需要考慮 RAD、程式碼重用和可維護性
我在這裡閱讀了出色的答案,並在此處觀看了 Scott Allen 關於 Angular的採訪
由於我們無法從目前的 ASP.NET MVC 4 架構更改為在伺服器端使用 Web API 之類的東西,我在嘗試使用 MVC 4 實現 Angular.js 時有些擔心。這會導致我們有兩個模型一個伺服器和客戶端一個?
我不是在尋找關於 Angular 和 Knockout 的“哪個更好”的討論,因為我認為它們各有利弊。我正在尋找在 ASP.NET MVC 4 應用程序中實現 JavaScript 框架或庫的實際程式碼。我需要一個可以忍受 2 年以上的解決方案 :)
有什麼想法或建議嗎?也許答案不是 Knock 或 Angular,而是其他一些 JavaScript 框架?
很高興看到這個問題引起了社區的興趣;)為了完整起見,這就是我最終做的事情:
我確實使用了 AngularJS 和 ASP.NET MVC 4,並且很高興我這樣做了。儘管 Angular 有一個陡峭的學習曲線,但由於指令的力量,它是值得的。
- 我們需要雙向模型數據綁定——有時我需要設置一些來自 MVC 控制器的初始值。我使用 ng-init 屬性來完成此操作。
- 我們需要測試視圖的能力——我按照AngularJS 文件進行測試
- “保存更改”功能 - 我使用 Angular 中的指令實現了這一點
- “通知”功能 - 我使用 toastr.js 和 and 指令(schweet)實現了這個
- 我們需要“證明”我們的應用程序——我不知道Google對 AngularJS 的計劃,但在使用 AngularJS 之後,我看不到它會很快出現在任何地方,並希望它得到更廣泛的採用 :)
我的 2 美分值。
序言 - 我曾與角和淘汰賽。我正在使用 MVVM/MVC 庫建構我的第三個非平凡前端。
我從淘汰賽開始,因為它的 MVVM 與 wpf/silverlight 機制非常相似。而且效果很好。教程和文件是一流的。您的所有編碼人員都可以在幾天內使用 knockout.js,或者如果他們在 .net 下使用過 mvvm,則可以在幾小時內使用。
然而,這些天我正在使用 angular,並且可能會因為以下原因而堅持使用它。
- angular 是一個完整的框架 - 淘汰賽實際上只是 2 路綁定。您仍然需要其他庫(如主幹.js/jquery)來完成其餘的工作。
- 角度有依賴注入。這非常適合為測試添加
模擬以及為程式碼提供結構。
- angular 將普通的 JS 變數視為其 $scope 對像中的可觀察對象。這意味著您不必以特殊方式聲明它們
我不是一個有棱有角的粉絲,我仍然認為他們可以更多地轉向 MVVM 架構,而不是他們目前擁有的“時髦”的 MVVM/MVC 混合架構。
角度最大的問題是文件。與淘汰賽相比,這是可悲的。這將增加額外的時間和成本來讓你的編碼器跟上速度。然而,一旦他們在那裡,它目前是恕我直言的最佳選擇。