2016 年的今天,Angular 1 還有什麼使用價值?

Angular 1 的編程和工程管理方式是否已經被時代淘汰了?


寫在前面

按照 Google 官方的 Branding 方案,Superheroic JavaScript MVW Framework(即 https://github.com/angular/angular.js)中的框架稱為 AngularJS,而 Angular(即 angular/angular)中的框架稱為 Angular。

官網也已進行全面修正:docs: branding fixes by IgorMinar · Pull Request #14132 · angular/angular,chore: Angular 1 -amp;> AngularJS / Angular 2 -amp;> Angular by wardbell · Pull Request #3143 · angular/angular.io。本回答中也採用這種方式進行指代。

1. AngularJS 過時了么?

是的,但這是因為 Google 自己這麼宣布了,和 AngularJS 好不好用並沒有直接關係。
但因為過時了,所以使用上會有一定的不便性,比如原 AngularJS 團隊的大部分成員都已經到 Angular 團隊去了,以後 AngularJS 既不會增加大的功能,遇到 BUG 的修復速度可能也不會太高。

但考慮到大多數 AngularJS 應用早就被鎖死在 1.2、1.3 版本了,所以出不出 1.7、1.8 對這些已有應用並不會構成太大影響。

這些人所謂的擔心往往不是需要 Google 的官方支持,而往往是需要 AngularJS 的流行度來保證他們能足夠廉價地招到會 AngularJS 的人、碰到問題他們能輕鬆搜到解決方案、各種第三方庫能隨便拿、自己不會別的東西也能容易地找到飯碗。

2. AngularJS 被廢棄了么?

目前還沒有,目前的狀態可以算作 Deprecated,而非 Obsolete。谷歌在 ng-conf 中宣布了在大部分 AngularJS 用戶遷移到 Angular 之前會繼續支持 AngularJS。

但對於前面說的那些要的不是官方支持只是流行度的人來說這當然還是個壞消息。

那為什麼說不應該繼續使用?因為再繼續用會給別人(Google)添麻煩(增加維護成本),並且別人也已經提供了更好的方案(Angular)以及無縫過渡方案(ngUpgrade)。

關於版本更新的哲學討論可以參考:為什麼軟體只允許升級到新版本而不允許退回舊版本?這其中牽扯到誰的利益? - 利益關係 - 知乎,對於 AngularJS 來說,當然沒有辦法限制舊版本的使用,只能是引導新版本的使用。

3. AngularJS 性能很差么?

參照 Table Report 中的較為全面的性能跑分,AngularJS 的性能水平大概是 Baseline 的 1.5 倍,雖然不算特別快,但也並不算慢。比 AngularJS 性能差的庫有很多,也一樣還有人繼續用。

另外有一類優化方案叫做 Restriction-based Optimization,比如通過新的語法(ES 201X、JSX、TypeScript、Flow)來提高准入門檻保證用戶的高需求,通過強制約束使用模式(某小**中僅提供有限的模版語法並限制 JS 操作)來保證性能的最低下限,通過大力推廣最佳實踐(*dux、App-Shell)來保證性能的統計學優越性等等。

這些方面里 AngularJS 做的確實非常不好。

4. AngularJS 的編程和管理方式是否過時?

IMHO,AngularJS 並沒有在編程和管理方式上有任何要求,本身就是普通的 JavaScript,可以用任何可能的方式來進行編寫和構建。Angular 裡面用到的先進工具和技術,比如 TypeScript、Webpack、RxJS 這些都是可以直接應用於 AngularJS 的。

唯一可以算作過時的地方可能要算 AngularJS 的模塊化方案和各種基於配置對象的 API 了,但是只要用 ngParty/ng-metadata 類似的方案包裝一下,基本不會對代碼組織造成影響。

如果是說很多 AngularJS 的書籍和教程中的方式過時的話,確實是存在的,但這個情況早在 Angular 出來之前就成立很久了。

5. AngularJS 是否還具有使用價值?

AngularJS 雖然不是商品,沒有價值,但使用價值是非商品也可以具有的基本屬性。

按照:

生活資料使用價值取決於它的消費對於個人勞動能力的影響程度所等效的標準食物能量。

的觀點的話,其實大家的在解放生產力上的效果都差不多,AngularJS 的使用價值未必比其它解決方案低。

正經一點的話,臟檢測的原理,依賴注入的實現等等 AngularJS 都是很好的學習材料。

0. 寫在最後

之所以不用 AngularJS,並不是因為它有多不好,只是因為更好的東西多了。就是這麼現實。


angular1已經完成它的歷史使命了。

讓我們永遠緬懷它。

它曾是最全面最強大的前端框架,

它啟發了很多人以新的角度去思考前端,

它讓web app更加普及,

基於它的ionic讓web打包應用更加普及,

它也讓很多普通前端有機會認識到複雜web應用的狀態管理問題,為react和flux思想的普及降低了門檻,

沒有它就沒有今天的vue……

它是前端的一個里程碑,價值不可否認。

然而到了今天,你已經有更靈活的選擇了。

至於新項目……你可以試試vue和react,等ng2成熟了也可試試ng2。


謝邀。

評價 Angular1 有沒有使用價值,可以從使用場景和使用方式上看。

首先,使用場景是否還存在?

Angular 是用來構建富 Web (CRUD)應用的,後面會有越來越多這樣的場景需求(比如我之前公司的雲計算部門下面的產品,還有很多傳統企業的互聯網化要做的一些管控系統,等等)。所以,場景依然存在。

其次,使用方式是否落後?

確實,Angular1 的框架是很重,而且約束很多,並可能存在性能的問題。但從另一方面講,它是一套大而全的解決方案,而且對 Java 人員很友好,性能的要求上應用型沒有展示型要求那麼高,而且通過一些優化也能解決大部分性能問題。所以,對一個前端資源稀缺而應用型需求又很多的公司,Angular1 仍不失為一個好的方案。

另外,使用 Angular1 也可以和 ES6 結合,開發上還是可以高效的。


瀉藥

在當前這個時間點來看,如果仍然以ng1官方guide的方式來開發,ng1的解決方案及工程可靠度確實已經不夠先進了,但是並不代表會被淘汰。

如果我們把ng1看做一個單純的視圖層框架,然後輔以ES6及webpack等構建手段,我們依然可以用ng1搭建一個先進且具備足夠演化能力的系統。況且最新的1.5版本加入了一些新的API來幫助我們做視圖模型VM的純化。可以參照我這篇Angular1.x + ES6 開發風格指南 · Issue #34 · kuitos/kuitos.github.io · GitHub

但是退一萬步講,即使我還按照古老的前端開發模式去用angular又如何呢?我的應用面向的就是一個中小型系統,我手頭上只有一個開發,我的周期只有一個月,項目交付了即便你用jsp做的會有人說你么??

當然這是極端例子了,我的意思是任何解決方案都需要考慮業務場景及處境,即便你知道最先進最合適的方案但是不具備可實施性,你依然是要做方案降級的。

最後用一句來回答問題吧:這個星球上絕對還有50%以上的頁面是用jquery開發並維護的。jquery絕對是過時的,但是被淘汰了嗎?


同樣一段代碼,在同樣的運行環境下,在2015年,2016年,以至於2026年,其運行過程是完全一樣的。如果這段代碼在這個運行環境下的功能滿足了同樣的需求,我不明白什麼為什麼「在2016年的今天」,我們就要急急忙忙的尋找淘汰的理由。

也許是前端圈的浮躁吧……


ng1搶的主要是backbone的飯碗,如果你的網站主要是展示數據,交互複雜度不是特別高,完全可以用這個框架

或者你們公司都是後端的沒前端,想找個快速上手的框架用ng1也不錯,畢竟太臉熟了

這框架的主要問題就是指令功能太坑了其它沒大問題


據我所知,ext、jQuery easy UI現在還有再用,angular2 並沒有出穩定版,angular1為什麼會過時了?


瀉藥

過時與否是相對於具體業務來說的,而不是某一個技術。

比如一個很複雜的後台,那麼jQuery就是過時的。一個很簡單的展示頁,jQuery就是很貼合的。

backbone如今還有大量的網站採用。angular只會更多。

所以不存在過時。


angular1.5作為一個剛剛穩定下來的版本,就要被人說淘汰?就因為框架重?我請問各位有幾個玩的轉component這個新概念,講清楚service和factory的異同點,面對不斷更新的外圍插件,幾個人玩的如魚得水?如何利用directive優化代碼?在冒泡廣播監聽中如何避免全局污染?如何利用restful介面鏈接資料庫?功底不紮實,在那吹新框架裝一個個跟真的一樣。


ng1在企業級web應用中目前為止還沒能完全替換掉jq,ng2還不能投入到生產環境,如何淘汰?


ng1寫後台管理系統還是很爽的。

controller、service、factory、directive、注入、單元測試……這麼多概念,終於可以跟後台聊到一起了。。(我說的是java)


對於新項目使用價值,不用考慮了,用新的框架吧。angular 1.x 的很多特性細節設計的非常蛋疼,這個是沒有做好規劃的結果。

說點學習價值

- 臟檢測(各種優化手段)

- 表達式的解析器(非常有用的知識)

- 依賴注入

- 指令的基礎部分。(不用看太深入,很多特性的設計和實現都很蛋疼。)

- promise 和 http 的實現。

看完之後基本上對於學習相似的框架都沒任何壓力。(除了 react)


用過ng1.3的說下理解,ng1特別適合做後端業務邏輯強,前端需求少的應用,比如說OA,ERP等。ng的設計思想對java後端工程師特別友好,當然現在ES6的語法糖也越來越偏向非腳本類語言,ng對於前端架構的進步是不可忽略的,比如說vue1.x,以及國內的regular也採用了部分ng1.x中的設計思想。

個人覺得,ng1.x並沒有過時,在某些特定的場合,依然可以使用。


要支持ie8.......


然而angular2更不要想 那個就是超重級別的了 網頁就別想上了

angular1.5 已經和 angular1.3又有很大改變了


一直用angular#1.3.12,為什麼過時了


推薦閱讀:

如何評價阿里巴巴最近開源的ANT DESIGN PRO?
前端 ,後端 關於數據交互的問題?
什麼樣的前端才是大公司要的前端?
antd走過了那些坑?

TAG:JavaScript | 谷歌Google | 前端框架 | AngularJS | React |