,常規用tp可以直接foreach,但是用angular就必須寫成這樣:
這樣將資料寫在js裡面,sql出的資料怎麼分配呢,豈不給自己找不自在?
那為什麼那麼多人在用angular,她到底好在哪裡呢?
學不學Angularjs不是重點,重點的是要學MVVM這一套邏輯(後面會說明這是什麼),而Angular剛好是這套邏輯最成熟的方案,所以很多人會建議你學Angularjs,其實還有Ember, Aurelia等等,都是很不錯的MVVM架構。
舉個例子(Angularjs):
像你寫的遍列資料,如果用jQuery,那麼需要這樣:
//foo is Arrayfoo.forEach(function(eachFoo){ $ul.append('' + eachFoo + '');});
而Angularjs需要在html上面寫,也就是用指令:
一般不繼續處理foo變數的話,顯然是jQuery會比較方便,但萬一你需要刪除foo裡的變數呢?在jquery中需要兩步:
第一刪除變數:
var index = 1; //需要刪除變數的位置foo.splice(index, 1);
第二刪除dom元素:
$ul.find('li:eq(' + index + ')').remove();//實際操作會複雜得多
而在Angular中,只需要在controller中把foo指定的變數刪除就可以了,也就是上面jquery的第一步,但寫法有點不同。
var index = 1;$scope.foo.splice(index, 1);
之後就不必再去管dom元素了,它會自動把變數對應的dom元素刪掉。同樣,如果要增加變數,只需繼續在foo裡push(新變數)就可以了,而jQuery卻不同,它不僅需要push,還要append,甚至還需要知道push到那裡了。
看到這裡,你大概就能理解為什麼這麼多人喜歡Angularjs了,因為有了它你就不必再操心dom元素了(這是一件十分痛苦的事情,特別是資料特別多的時候),你只需定義好了指令,然後直接操作$scope裡的變數就可以了,這是一件多麼舒心省事的事情。
回到MVVM來,這是什麼鬼?MVVM其實就是model view - view model,也就是資料與視圖的綁定,操作資料等同於操作視圖,操作視圖也等同於操作資料,也就是傳說中的雙向繫結。
再回到你的問題來,需不需要學習Angularjs,我認為是需要的。無論項目大小,anguarjs完全可以取代jquery,況且angularjs裡包含了jquery(迷你版,盡量少用)。學習並不困難,我大概花了兩個星期就入門了,建議照著官方文檔案例學習https://docs.angularjs.org/tutorial,寫得相當好。
表單驗證對於angular來說比jquery更有優勢,因為你根本不必處理使用者輸入錯誤時dom如何處理,你只需定義好指令讓angular來處理就好了(可以結合validator第三方包來處理,更是簡單得要命)。
至於動畫,angular比jquery還簡單點,因為全是用css來寫的,與jquery那些fadein fadeout有點不同。更爽的是,只要css定義好了,你所有dom的出現和消失都是帶有動畫的,比jquery每個dom都寫一個動畫簡單得多。更是因為css動畫是有GPU加成的(transform3d),比jquery流暢不是一點點。
但angular並不是完美,有些缺點你必須接受,如果你項目SEO比較依賴,用Angular稍微麻煩點,因為view基本上是js來操作了,搜尋引擎是看不到的(解決辦法也是極為複雜),特別是用了route的,做SEO更是困難。所以很多時候Angular大多用在移動端或者APP,案頭端比較少用(並不是完全沒用,主要是jquery現在用的人太多)。
擴充:
React比angular稍微複雜點,涉及到一個虛擬dom的知識點,它是直接在js中寫html,連指令也不用寫,最大的好處是執行效率相當高。我剛開始接觸,還沒真正用上,有機會再研究研究。
另外你說到了bootstrap,這是UI架構,主要負責外觀,跟jquery angular區別還蠻大的。
另,我寫了個雲相簿,剛開始是用jquery寫的,現在正慢慢遷移到angular來,有興趣可以看看:http://www.lazycoffee.com
我也是剛接觸Angularjs不久,為避免誤人子弟,請別轉載
Angular最好的地方就是能讓你向寫後台代碼一樣的寫前端代碼
template和Controller 基本上可以實現經典mvc的形式
為什麼要用它呢
1 - 學習門檻低 簡單易用
2 - 確實讓代碼更好維護
3 - 雙向繫結還是很方便的
4 - 如果你用Ionic 你躲不開Angular
5 - 如果你寫移動端的WebApp angular可以一次載入 更快的裝載處理各級子頁
我也是做後端php開發的,前段時間想做一個項目,前端希望考慮用angular,於是就學習了一把,心得是
1.思想很牛,把mvc整合到了前端開發,維護起來很容易
2.但項目如果不是太大的話就不要考慮這個東西
我不是專業做前端的,可能對於angular掌握的不是特別好,但好像最近很久一段時間react貌似很火的樣子,對於處理dom很牛叉,如果可以在angular抽出身,弄弄那個貌似不錯
個人意見
angular是針對那種【後台唯寫介面,前端根據介面返回的值自己處理邏輯】的APP式頁面的
你把邏輯都交給後台,前台大部分操作都提給後台,php動態產生頁面這種格式當然覺得無必要。
雙向資料繫結簡直相當有用啊,你覺得沒有用可能是你還沒有遇到相應的情況。比如說你有一js二維數組想要以表格的形式展示在html模型上,而模型上還要給這表格加上增刪查改等功能。用angularjs之後你需要做的僅僅只是操作一下js二維數組,不用做任何的dom操作,就能達到目的。不過angularjs卻與html和js代碼分離的規範相背離確實是個問題。
贊同一樓的觀點,學習一套架構,更多的去學習其中的思想。很多知識是相通的,學習了angularjs
算是知識儲備。就比如大學先學習c語言
,C#
,後來學習java
就會感覺容易很多