是否有必要學習angular

來源:互聯網
上載者:User
說下自己的情況。
開發前端主要用bootstrap,jquery,ajax。效果動畫表單驗證什麼的也是jq。
後台主要用thinkphp。

前段時間想搜一下更好的前端架構,看到angular。但是學習了一段時間感覺非常困惑。
那篇神問答也看了三四遍,主要的核心就是不要操作DOM。但是按照angular的寫法,擴充每個html標籤,這樣對比jquery那種html和js分離的寫法貌似沒任何優勢啊。

第二個就是資料雙向繫結,感覺也是用處不大,不論是表單驗證還是其它動畫效果感覺jq無壓力啊。

還有個疑問就是MVC,為什麼不用tp的mvc,而要用angular在前端再分離一次,這樣有什麼好處呢,假如我要迴圈

    下的
  • ,常規用tp可以直接foreach,但是用angular就必須寫成這樣:


    • {{**}}

    這樣將資料寫在js裡面,sql出的資料怎麼分配呢,豈不給自己找不自在?

    那為什麼那麼多人在用angular,她到底好在哪裡呢?

    回複內容:

    說下自己的情況。
    開發前端主要用bootstrap,jquery,ajax。效果動畫表單驗證什麼的也是jq。
    後台主要用thinkphp。

    前段時間想搜一下更好的前端架構,看到angular。但是學習了一段時間感覺非常困惑。
    那篇神問答也看了三四遍,主要的核心就是不要操作DOM。但是按照angular的寫法,擴充每個html標籤,這樣對比jquery那種html和js分離的寫法貌似沒任何優勢啊。

    第二個就是資料雙向繫結,感覺也是用處不大,不論是表單驗證還是其它動畫效果感覺jq無壓力啊。

    還有個疑問就是MVC,為什麼不用tp的mvc,而要用angular在前端再分離一次,這樣有什麼好處呢,假如我要迴圈

      下的
    • ,常規用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上面寫,也就是用指令:

      
            
      • {{eachFoo}}

      一般不繼續處理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就會感覺容易很多

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.