2015-10-14 72 views
0

我有一個Web應用程序。它有一個非常傳統的技術堆棧。服務器端是Apache Struts,數據庫是db2,在客戶端我使用的是JQuery。該應用程序通過websphere部署。僅在客戶端使用Angular with JQuery

最近我已經開始在很多頁面上大量使用JQuery,並且我已經慢慢地開始看到某些頁面後面的JQuery代碼變成了意大利麪條代碼。

我正在尋找在客戶端添加Angular.js和handlebars.js給我的JQuery更多的結構。

首先我想問一下,如果這是一個很好的用於Angular.js和如果我用jQuery的Angular和handlebars每個人會用什麼目的。

謝謝

回答

4

我做了很多使用jQuery的DOM操作。 切換到角度已經大大地清理了我的代碼。這裏有浮現在腦海中的幾件事情:

做瑣碎的東西,就在HTML

一個簡單的事實,你可以做很多瑣碎的事情就在HTML擺脫很多JS的碼。下面的jQuery代碼要求我觀察複選框的更改,而不是根據選中的狀態,我必須顯示或隱藏下面的範圍。使用angularjs,不需要一行自定義js。

<input type="checkbox" ng-model="show"/> 
<span ng-show="show">show me when checkbox is checked</span 

沒有更多的在你的js代碼

每個HTML現在比你會發現自己循環槽的陣列,在你的js添加錶行或立的,而不是推EM到DOM。您基本上在您的JS文件中編寫HTML。使用ng-repeat可以保持在HTML模板文件和環槽的陣列,就在你想建立一個表/表/等

<li ng-repeat="user in users">{{ user.name }}</li> 

功能是在你的HTML更清晰

因爲jQuery在javascript代碼中使用選擇器,我經常發現自己正在搜索按鈕的實際功能。使用角度可以使用ng-click來調用一個函數。這使得看到HTML時實際發生的事情變得更加清晰。

<button ng-click="recalculateUsage()">recalculate</button> 

沒有更多的佔位符

另一大好處是,顯示你的模板數據可以作爲{{ user.name }}一樣簡單,而不是創建一個佔位符,你比填充使用jQuery。 $('#userName').html('my new content')

指令

指令是清理你的代碼的另一個好方法。很多使用過的元素可以存在於自己的js/template文件中,並且可以以簡單的方式插入到HTML中。

+0

好處的更多細節,同時也爲您提供了JSON更容易獲得/ API等... – Schuere

+0

此外,它本質上是通過採用模塊化設計,提供服務,控制器,工廠,過濾器,指令,攔截器,提供者。大多數服務,甚至核心都很容易擴展。這使得測試你的角度應用程序變得輕而易舉。然後是非常強大的承諾系統。由於它,你可以有自動重新登錄,自動記錄,自動錯誤處理和授權攔截器。而提及除數據綁定之外的其他內容+1。不過,我會補充說,jQuery可以發揮很好的角度,但應該在任何DOM操作的指令內使用。 – ste2425

1

AngularJS和JQuery都有不同的用途,因爲它們都有不同的目標。

JQuery在DOM操作中受益匪淺,不需要太多關心數據。而AngularJS另一方面爲您提供MVC框架,用於分離模型,視圖,控制器邏輯並提供雙向數據綁定。

見本約的角度What does AngularJS do better than jQuery?