如何評價 Angular 2.0 Final Release 的發布?
9.15 中秋之際,Angular 2 官方博客正式宣告 Final Release,該最終版較之前的 Release Candidate 都有哪些改進?與 React, Vue 在渲染性能、尺寸與功能集等方面又孰優孰劣?相較於之前長時間的 rc,現在可能是評價 Angular 2.0 的最佳時機了。
傳送門: http://angularjs.blogspot.tw/2016/09/angular2-final.html?m=1
Angular 2 所犯的最直接的一個錯誤就是走向了「只有我完美了,別人才會喜歡我」這個誤區。。關於這個想法為什麼是錯誤的,可以參考 認為「只有我完美了,別人才會喜歡我」的想法有什麼錯誤,該怎麼解決? - 人際交往,不過這個並不是本問題的重點不多討論。
Angular 2 作為一個一體化解決方案試圖在每個方面做到完美,自宣布以來,Angular 2 用了兩年的時間,經歷了 55 個 Alpha、18 個 Beta、8 個 RC (我也不知道為什麼 Beta 和 RC 是從 0 開始的)來做這件事情,並且幾乎在 API 層面完全推翻了 API 層面的設計(雖然理念復用的很多,但很多用戶顯然還看不到這一層就看不下去了)。
所以這裡就簡單談一談 Angular 2 幾個較為致命的問題。(認真臉)
1. 過於追求性能優化
性能上不僅好過了 Angular 1.x,也(較為公認的場景下,不同人的測評結果可能不同)高於 React 和 Vue,這個在大量的跑分中都可以看得到,比如 dbmon,Table Report 等等。而且幾乎所有的跑分都是在沒用 Web Worker 的情況下,Angular 2 還能藉助 Web Worker 進一步加速。但問題是,React 和 Vue 的性能並不差,並且 Angular 2 雖然更好了一些也並沒有產生數量級的差距,已經用上 React 和 Vue 的童鞋自然也沒有必要因為這一丁點的性能就做遷移,反倒是 Angular 1 的性能被一直詬病,可能用戶早就因此遷移出去。
2. 過於追求跨平台
Angular 2 擁有幾乎卓越的跨平台性能,所有能支持的平台基本都支持了,不僅日常需要的 Web、Server Render、Hybrid(Ionic 2)、Native UI(NativeScript) ,還順帶連 React Native 也都一樣支持了,由於是 Google 的產品自然也少不了 Progressive Web App 的支持。
但實際上,真的有用戶需要同時跨那麼多平台么?絕大多數用戶的場景就只有 Web(可能為了 SEO 加上 Server-side Render),另外有一小部分用戶需要同時跨 Web 和 Mobile(不管是 Learn Once 還是 Write Once 還是 Whatever Once),對於絕大多數用戶而言那些額外的平台支持並不會作為太大的加分項。而且還出現像 NativeScript 和 React Native 這樣幾乎相同場景的選擇,給用戶增加不必要的選擇負擔,也為天秤座的童鞋帶來了極大的不便。
3. 過於追求先進性
Angular 2 雖然一直支持普通 ES5 的寫法,但為了主推結合 TypeScript 的所謂的最佳實踐,強行把文檔里的語言選擇下拉框藏在小角落裡,讓很多用戶一上來就直接看到 TypeScript 代碼以至於一片茫然,同時還故意拖延 ES5 版本的文檔進度讓用戶即便想用 ES5 也無從下手。
為了幫助淘汰老舊產品,也不提供 Bower 版本,當然同時也就反過來會被一部分 Bower 用戶淘汰。為了充分貫徹模塊化的理念也不直接提供 js 文件,只能靠用戶從 npm 下載發布版本(雖然 npm 也有 npmcdn 但是顯然麻煩也了很多)。
而且為了維護 Angular 的純潔性,也不在文檔里說明怎麼操作 DOM,怎麼結合 jQuery 這些接地氣的東西,即便做起來也非常容易。
對於 @angular/upgrade 這種 Angular 1.x 到 Angular 2 的無縫升級方案也幾乎完全不提及。
4. 過於追求設計模式
雖然提供了更加完備的依賴注入(除了構造函數注入外現在還有 @Input、@ViewChild 這些屬性注入),但實際上很多用戶壓根就不寫單元測試呀,提供這麼友好的測試環境又有什麼用呢,只會讓這些用戶覺得更為繁瑣,增加了不必要的學習和使用成本。
雖然又引入了靠 Decorator 模擬的 Annotation 來實現的純聲明式操作,但對於很多有斯德哥爾摩綜合症的童鞋來說這些都是明顯不需要的,就只是多寫一些代碼並且更不好維護而已為什麼要去就學習一個新語法呢?於是對很多童鞋造成了不必要的負擔。
同時還完全貫徹了單一職責,什麼 ChangeDetector、Differ 都分成了單獨的實體,明明很多人就是喜歡臃腫不堪的 Scope,這樣做完全是多此一舉。
5. 過於追求高大上
從 rc5 開始就把 Offline Compiler 的使用叫做 AOT 模式,反之叫做 JIT 模式。雖然對於搞 PL 的童鞋來說非常親切,但是又得讓很多沒有任何計算機相關基礎的童鞋一臉茫然了。
像 Change Detection 部分還用了 Hydration、Dehydration 這樣的純化學概念作為專有名詞,以挑戰用戶的英文水平。
最過分的居然把 Web Tracing Framework 一直以縮寫的形式使用,讓小朋友看到了想歪了怎麼辦?wtfCreateScope、wtfEndTimeRange、wtfLeave - ts、wtfStartTimeRange。
6. 過於追求生產力
為了杜絕用戶再進行諸如手動引入 js、靠 concat 來實現 js 打包這種低效的事情,強行對用戶洗腦能夠一勞永逸解放生產力的解決方案,比如 SystemJS、Webpack 等,當然我們的用戶也還是很聰明的,能夠馬上發現這種洗腦行為並快速逃離,回到自己幸福的男耕女織田園生活。
7. 過於相信品牌效應
就因為自己是 Google,還有一個叫 Microsoft 的合作夥伴,就開始忽視傳教的重要性。Angular 2 都正式發布了還有很大一票人連有 Angular 2 都不知道,剩下的還有很大一票人覺得 Angular 2 要跳票,再剩下的仍然有一大票人以為 Angular 2 還停留在 Early Alpha。連 NingJS 也不派人過來講個 Session 讓大家了解一下進度,就為了中秋節突然搞個大新聞讓大家都不能好好吃月餅。
8. 過於不照顧字母序在後面的童鞋
這樣按字母排的話字母靠後的童鞋不高亮誰能看得到。。(T_T)總算出來了,作為1.x資深用戶,2.0初期的觀望者,一直到現在的使用者,感受很多,@Trotyl Yu 寫的大部分我是很認同的,總的就是覺得它出來太慢,考慮的事情太多了,而且過於在意跟其他框架對比,宣傳也做得差,直接導致自己的大量用戶流失。
我提一些自己的感受吧:
1. 從整體上講,ng2概念還是偏多的,但這不算問題,因為他面向的主要還是大型企業軟體用戶,這類群體根本不介意概念再多一些,也不怕設計模式,所以,如果是to C的場景,選擇它的可能性不會很大,但是在to B的場景中,或者一些內網應用,還是比較容易獲得一些認同的。
2. TypeScript。關於是不是要使用TS,不同的人有不同的見解,很多人覺得這是多此一舉,自找麻煩,但如果結合上面提到的它的目標受眾的話,還是有比較重要的價值的。這個群體普遍會覺得有類型約束會對生產力提高有幫助。
3. RxJS。它深度綁定的Rx,仍然是一個比較有爭議的東西,因為它概念上有一個接受門檻,對初學者並不友好,但仍然考慮它所面臨的群體,Rx在.net和Java開發者(尤其安卓開發者)中,普及程度要比在Web前端高多了,而且Rx本身帶來的很多優勢,能夠解決業務上的很多問題,尤其是大量的非同步過程組合的問題,此外,有了這麼個東西,也可以不需要別的平台里的redux這類東西,就能處理好數據的流動和組件之間的通訊問題。如果能接受這些,那就能夠理解前面提到的TS的問題。如果寫RxJS,但是不用TS,那就太為難自己了。多個流組合之後的結果,如果能直接看到類型,對生產力還是比較有幫助的。
4. 組件編寫的語法。在這個點上,是存在不少爭議的,比如說,組件類是否應當是class這種形態?組件的實例化過程,是否也能跟正常的constructor這類東西混合在一起,以增加更多的控制力?Decorator的寫法是不是分離出一些東西,讓主流程更清晰?我個人是比較傾向於class的寫法,所以,我們mobile版,用的是vue,但是用了ts和rxjs,也使用了一些decorator,不注意看的話,可能會以為寫的是ng2。
5. Directive。我之前看到某些問題的回答下面,有人提到幾個問題:
- ng1引入的directive概念是完全沒用的- ng2是不能跟jq結合,對jq很不友好的我來解釋一下我的觀點,後面提到的directive特指attr形態的directive,因為在ng2裡面,component還是一種directive。這種attr directive是必要的,它存在的價值是對普通components的補充。因為在組件化體系里,除了「組件」,還有「行為」,行為也是一種形式的組件。
舉例來說,如果是界面的組件化,普通人可能都很容易理解,無非就是按照功能切分界面塊,不管切得好不好,一般都能像模像樣。這時候我問你個問題,如果有一個行為:當滑鼠移動到某個組件上,這個組件就展示某種形態的邊框。這種應該在代碼中被定義成什麼東西?
所以,如果你從這個角度理解directive,就可以認識到,把這段東西封裝成一個directive,然後加到那些你想有特定行為的組件上,就可以完成想要的功能了。例如:
&
&這裡的hover-border就是一個directive,跟component是正交關係,作為組件的一個修飾,對其功能進行增強。
這時候我們再考慮下,ng體系是不是對jq很不友好?其實不然,你大可以在directive內部去基於dom做某些事情,只不過在ng1裡面,你是可以直接在這裡用jq,而在ng2裡面,是使用ComponentRef, ContentChildren之類的東西去操作組件內部的DOM,並不影響使用jq的一些東西,在跟jq的結合容易程度上,ng跟vue肯定要比react好。
6. Pipe。這個東西,你也可以理解為對filter的一個改名,當然它能做的事情是要多不少的,我舉一個比較有價值的東西:async。這是幹什麼的呢?
&
這句裡面,todoList是不是必須存在?如果不存在,我們是不是要預先定義佔位變數之類?不然就要寫ngIf來區分不存在的情況。(當然ng1裡面可以不寫,空對象異常會被框架吃掉,這是很方便,但是對排錯不利)。
但是藉助async這個pipe,你可以把這麼幾種類型綁定過來:
&
這個todoList$可以是:
Todo[]
Promise&也就是說,你可以直接把一個非同步的東西綁來這裡,它自動幫你做resolve或者subscribe之類的事,這樣你在組件類裡面就會比較省事了。如果你整個應用是深度使用了Rx的,那在這裡省事的可不止一點點。為此,我們也在vue上面做了點改造,這樣移動版本也能用類似的方式在模板上綁定Observable。
7. DI和NgModule。說實話,對這兩個東西,我是有一定保留的。我當然也知道DI能讓很多事情變得方便,但是考慮到一個問題,在前端做DI,繞不開非同步載入這麼一個坑,當DI和非同步載入碰到一起,就比較折騰了。如果說,為了這個,還需要在module那裡再搞什麼factory,還要再考慮非同步什麼的,我心裡是有些抵觸的,所以對rc5這個版本非常不滿,因為這個版本把ng1的module又用不同的方式拿回來了!
我理解它這麼做的用意,除了解決非同步DI的問題,還用一定的方式去約束業務代碼,包括第三方庫的一些組織方式,從而儘可能避免命名空間衝突,比如說,組件在模板中使用時候的命名衝突,引入兩個庫,都有&
但我覺得,這個事情還是沒法徹底解決,不光ng沒徹底解決,別的框架可能都沒嘗試解決。這也就是ng2團隊考慮得多的地方,因為他是站在一個大型軟體開發框架的角度去看待這些問題,這些東西可能勉強解決了那邊的問題,但同時,對小型應用的開發團隊帶來了很多麻煩。
另外,rc5因為引入了NgModule,所以依賴關係的定義也跑到module這一級了,這讓我非常不滿,之前在組件上顯式定義所有依賴,哪怕連內置的ngFor,ngIf都要定義,我都能忍(當然後來不用了,可以指定到全局去),因為我這麼麻煩地定義了組件之間的依賴關係,就可以精確跟蹤整個項目的依賴狀況,用一種圖形化的方式去看這些關係,類似這個:GitHub - manekinekko/angular2-dependencies-graph: A simple tool to draw a component dependencies graph of an Angular2 application. 這是非常有用的!然而現在只能跟蹤到module級別了。
8. 數據的變更檢測機制。可能ng1的變更檢測已經比較變態了,因為他監控DOM事件、AJAX、定時器等等,在每個可能導致數據變更的地方去做數據比對,可能不少情況下,會導致性能的一些問題。在ng2裡面,它竟然是朝這個方向更加進一步了,用了zone這麼bt的東西,監控更多東西。但是,注意到,這裡它的變更檢測策略是不同的,不再會去傻傻檢測整個scope樹,因為這次沒有$scope這種東西了,數據是直接掛在組件這個級別的,所以有機會在數據變更的時候,禁用某個樹枝上的所有數據變更監測,從而提高效率。細節可以參照我們團隊太狼同學的這篇回答:https://www.zhihu.com/question/46662780/answer/102300661
9. 性能,所以,我也要提一下性能。為什麼這麼晚提,因為這個東西沒那麼重要。只要能減少大多數無效的數據diff,性能都低不到哪裡去,只要性能在一個數量級,都不是大問題。現在,ng2,vue,react這些東西,性能其實是一個數量級的,糾結誰比誰快30%或者50%都沒有那麼重要的,該卡的地方,大家都卡,該流暢的時候,大家都流暢。適當優化自己的數據組織、渲染過程才是正道。另外,ng1也不慢啊,其實也在一個數量級上。這麼多人不喜歡它,難道是因為性能?
10. 體積。雖然能搖樹,ng2的構建大小還是有些大,不過在to B這個場景,這不算問題。如果做mobile開發,直接打在應用內部,也沒什麼,那些做輕應用的要慎重。我們也是基於這個原因,在mobile版選擇了vue,沒有敢選它。
如果是做桌面軟體,配合electron使用的話,還是不錯的,這些都不用管。
其他么,有一些細節待探討,比如router只有Observable形態的介面,但是裡面有些東西又是轉成Promise之類,就不吐槽了。至於網路請求這塊,我們是自己做的,沒有用ng自己的,因為我們是這麼一種搞法:
- 通用的數據層,ts + rxjs構建,這層多做了很多事情,而且是視圖層框架無關- PC端,ng2- 移動端,vue + ts + rxjs (除了我們,估計你也找不出其他家這麼用的)我們來談一談信仰問題。信仰是一種偏見,我偏見地認為Ng2是值得長期投資的技術。
Take the following with a grain of salt.
你要相信Google手裡有業內最好的Javascript compiler,特別是深度「搖樹」(Tree Shaking)技術,從Closure Compiler時代這東西就已經成熟了,但幾年下來,這個東西使用並不廣泛,因為高級模式對源碼結構有要求,很多第三方庫都支持得不好,現在這東西可以集成到Ng2 workflow裡面,一個Ng2 App結構規範性更好,這東西能發揮出實力來,所以要說效率和性能,可以預測會超過React和Vue,可能還能超過不少,看官可靜聽官方和社區下集分解。
你要相信TypeScript是未來區分兩個JS項目品位的重要指標,用TS的將被認為品位更高,可讀,維護,開發速度,魯棒性,都將更勝一籌。有Type和沒Type不是一回事,懂得用Type system寫出更好的程序的人將會更有價值。類型系統賦予編程的抽象能力,是極有用的,JS程序員長期是用數據和狀態來思考問題而不是以介面來思考問題的,而這對於靜態語言程序員來說,是很自然的事。現在NG2可以管理大部分狀態的問題,程序員可以更多地關注組件,介面,服務這些稍微高一點抽象層次的問題,和業務和呈現更加接近的問題;配合編輯器的intellisense,寫大型JS飄逸很多,更重要的是代碼質量的提升是可見的,質量不好的地方變得更可見。
你要相信不久的將來Hybrid Mobile App的主要問題不是性能,最終developer ergonomics,flexibility,long-term cost 的重要性,對絕大多數應用來說,一定戰勝CPU time,所以React Native這樣的東西會小眾化,自帶核武器(WebStack)的Hybrid Mobile App會鳳凰涅槃。更遠的未來可能只有App,沒有Mobile App,沒有Web App,就是App,NG2現在的格局來看,貌似是朝這個方向去的。
Ng2不是完美的,DI一定是會被濫用的,底層點的DOM操作一定是要繞彎的,會感覺不是很自然,但這些問題沒有大到讓人放棄NG2的地步。因為你要相信,宏觀的架構法則有更重要的價值,DI,避免DOM操作(declaritive),Component樹,Service層,Framework-thread(web worker)等等,整套思路大量取經於靜態語言項目(Java,C++),工程的品位高了不少。
這不意味著沒人會用React和Vue,但是慢慢地會有越來越多的程序員發現他們有一個強勁的競爭對手。我希望Google這次能多注意營銷,按照NG2和其他平台的可集成能力,一旦生態圈起來,將會是長足趨勢。
但還是要說一句,你不應該因為一個東西新發布了就選上它,這不是什麼理由,還是要充分考慮自己項目的實際情況,考慮誰來用技術,以及技術本身的內在究竟契合不契合。如何工程化開發大型angular2項目(上篇)(分享自知乎網)http://zhuanlan.zhihu.com/p/23808621
====更新答案=====Tip.1,不要在組件生命周期的ngOinit方法做路由跳轉。Tip.2,有時由於非同步原因,得利用自帶ngZone.run(),進行強制上下文。=================淺談一下從3月份到現在用angular2的體驗。alpha版到rc.7,之間變動之大。router系統重構好幾版,component組件編寫語法也是變了好幾次。上頭追新,作死應用到生產環境,應用越做越大,打包出來JS都快2、3M。導致客戶普遍抱怨首屏載入慢。還好後來在Nginx伺服器上做了優化,還有angular提供了預編譯技術,先渲染HTML。速度提升60%。
這裡也不是抱怨angular小組技術變動大,畢竟還是研發階段。我想提一點是,追求新技術是值得鼓勵的,但是不要把還在研發的技術應用在主線產品中,而是用在一些內部系統中。不然真是血的教訓。 當然要說說,angular這次變革式創新出了2代。優勢有 1.學習成本降低,因為有中文版文檔www. angular.cn,在也不用聽新同學抱怨英文看不懂。基本看幾天就能上手。會angular2,看vue基本無壓力,反過來也行得通。 2.技術實現成本降低,用angular1實現組件共用,用2輕鬆實現。現在項目里已經有很多通用組件了。 3.react,vue的redux,angular2也有,ngrx技術。 4.對於選擇恐懼症的盆友,angular2真是一站式服務。 5.聽說react可以開發native app,不好意思angular2和nativescript也可以開發原生app。 忘了說一句,angular2還可以開發react native。(自行上GitHub搜索angular2 react native). 6.最六的是支持Rx.JS。 7.人生苦短,快用angular2吧。PS:哪有蘿蔔坑,準備挪坑,私聊其實光看 feature set,主流的框架都大同小異了。性能尺寸啥的,也都是量的差異而不是質的差異。最終是不同的開發模式/體驗吸引不同的開發者群體。個人覺得 ng2 的主要賣點就是 TypeScript 和 IDE,對於習慣了 C#/java 的開發者是很自然的過渡,而這部分人群還是相當龐大的。反過來對於 TS 和各種設計模式那一套無感的開發者,自然就流向 React 和 Vue 咯,雖然也不是不能用 TS 寫 React 和 Vue。話說回來,有些 TS 使用者的優越感也真是沒什麼必要,真的追求高大上咋不去用 Elm 呢。
beta 拖太久會影響使用者的信心吧 早期使用者都捏著一把汗
而且angular之前的版本號很混亂 rc&我
- 曾是 Closure Library / Closure Compiler 用戶- 是 Angular 1 早期用戶- 現在主要項目用 React + TypeScript,常常因為 DefinitelyTyped 上面的 react.d.ts 和 flux.d.ts 寫得不完善且不穩定而不爽 - 喜歡把頁面畫得 Material Design所以… 我還真沒什麼理由不用 Angular 2 呢。現在就等 Angular 2 的瀏覽器兼容性更平滑一點啦~來看看我對官方發布說明的翻譯吧:
Angular 2震撼登場!
今天,在 Google 總部一個特別的聚會上,我們發布了 Angular 2 的最終版, Angular 1 的全平台繼任者。
「最終版」意味著什麼?意味著它的穩定性已經得到了大範圍用例的驗證;意味著它已經針對產品化、文件尺寸和性能進行過優化;意味著藉助預編譯技術和內置的延遲載入機制,我們可以確信你能發布出最快、最小的應用,並且橫跨瀏覽器、桌面和移動平台;意味著為開發人員準備的 Angular CLI 和風格指南得到了巨大的增強。
Angular 1 首先為新興的 Web 技術解決了如何開發的問題。六年後的今天,開發人員面對的挑戰是:應用程序必須支持多種多樣、千變萬化的設備。在這次發布中,我們有了更強力的路由器、表單和其它核心 API 。現在,你可以為任何平台構建酷炫的應用了。也許你更喜歡用自己的方式, Angular 同樣是模塊化並富有彈性的,這樣你就可以自由使用你喜歡的第三方庫——或自己寫一個!
從一開始,我們就在與開源社區合作來構築 Angular 。我們要對大量的捐獻者表示由衷感謝!他們奉獻了大量的 Pull Request 、 Issues 和可重現的用例,他們為各個設計決策展開探討和辯論,他們對我們的各個 RC 進行了驗證和反饋。我們真心希望可以把你們中的每一位都帶到我們的聚會現場,與我們一起慶祝這個偉大的里程碑!
下一步怎麼辦?Angular 已經面世,我們懷著激動的心情歡迎您成為無數個用 Angular 構建應用程序的開發人員中的一位。那麼, Angular 下一步打算做什麼?
下面是一些 Angular 開發組近期要做的事:
- BUG 修復並對標記為穩定( stable )的 API 進行非破壞性變更
- 針對您的用例寫更多的開發指南和在線例子
- 在動畫方面展開更多的工作
- Angular Material 2 庫
- 讓 WebWorker 走出實驗室
- 為 Angular Universal 開發更多的特性,支持更多的語言
- 進一步提高速度,縮小體積
語義化版本
我們明白 RC 版本標籤有些撲朔迷離。為了讓您在 Angular 的穩定版中管理依賴更輕鬆,從今天的 Angular 2.0.0 開始,我們將遷移到「語義化版本」規範。今後的 Angular 版本將遵循 semver 所描述的 MAJOR.MINOR.PATCH 方案:
- 當對標為穩定的 API 進行不兼容的變更時,增加主版本號( MAJOR ),
- 當添加了向後兼容的功能時,增加次版本號( MINOR ),
- 當以向後兼容的方式修復了 bug 時,增加補丁號( PATCH )。
遷移到語義化版本方案可以確保我們的組件和工具等生態圈能快速訪問最新特性。雖然即使保持了一致和穩定的開發環境,產品級應用仍然會依賴於主版本之間的穩定性,但這對 BUG 修復和發布新 API 來說仍然是顯著的優點。
重新定義了 rc 的含義。
已經深深地愛上 React 生態。
雖然個人不喜歡 Angular, 不過有幾點顯著改進增加了好感度:
- 醜陋的依賴注入語法終於改成了 import/export.
- controller / component 終於從工廠改成 class 了, 設計模式害人不淺, 隨著作者們編程水平提高必然會減少設計模式的使用...
- 模板語法也改變了, 要遷移是不是會很頭大? 其實 2 提供的 UpdateAdapter 可以直接把 1 的代碼拿來用, 不需要做什麼改動. 只要先升到 1.5 (1.3 到 1.4 會有些要注意的, 剛把一個大項目從 1.4 升到 1.5 只改版本號沒發生任何問題).
- 仿 Ember-cli 的 Angular-cli
作為被拋棄的1x用戶,我已經習慣vue和react了。
ng2為這兩個庫的推廣也算是做出了卓越貢獻年初開始一路追過來。angular 2的各種內容經歷了好幾次變動。從Module定義,到HTTP服務,到Router的寫法。
保守一點的,尤其大公司,一定是不會現在就把 Angular 2 用在生產中。這種小白鼠的事兒,有的是公司會幹(大霧
但這並不妨礙自己寫點兒project玩兒玩兒。
工具方面記得不到一年前剛接觸 Angular 1 的時候還是在用 Bootstrap + Yeoman + Grunt + RequireJS,現在已經換成了 Materrialize(或者 Angular2-Material)+AngularCLI + Webpack。語言也從JS換成了TS,從CSS換成了Scss。
恐怕這就是前端吧,每天都有新鮮事兒作為一個不喜歡折騰的後端,還是非常喜歡這種官方集成化解決方案的。
如果已經習慣了idea寫java那種被寵溺的感覺,ts類型系統帶來的自動補全增強和靜態錯誤檢測幾乎可以滿足到你了。是時候成為一個tser了
Angular 為現代設計,擁抱未來。
在吸收了當下最先進的思想和技術後, Angular 2 框架問世,這是一個新時代,完全顛覆揮別了 AngularJS 1 平台,名字也準確定義在 Angular 而不再是 AngularJS。(後文 Angular 均指代 Angular 2.X 以上版本,AngularJS 指代 Angular 1.X)
Angular 2 帶來了更先進的應用開發平台,它基於最新的 ES6 進行開發,提供移動優化,支持跨平台開發的能力,以 Component 組件而非 DOM 為核心,實現了突破性的速度與性能。包含了這一代的技術和思想頂峰。
而 Angular 團隊計劃每六個月發布一個主要版本來跟進技術,與此同時官方承諾*「不會再做任何像升級到 Angular 2 一樣會破壞軟體生態系統的重大更改重,API 也將不會有重大更改」*,這是一個對未來技術的可靠預見。全新來過,Angular 2 是未來的先進可靠選擇。
和之前不同,一個很大的變化是,Angular 主要使用 TypeScript 來開發,這一代官方目前的文檔和案例都是以 TypeScript 語言為指導。
這讓我想起來十幾年以前使用 JavaScript,JScript,VBScript 在網頁中寫腳本的混亂年代;然後,幾年以後JavaScript 成為互聯網第一大語言,面向的方面和需要的功能越來越多,眼看一統江湖,語言的廣泛使用卻對應著標準實現的進展緩慢;再幾年,CoffeeScript,Dart,TypeScript 又重新製造混亂…… 實則不過十幾年,技術語言起起伏伏,分裂統一又分裂,最終為在技術面前仍像個孩子一樣在探索的自己留下一些對混沌和秩序的冷靜。
國內首個 《Angular 2 純 JavaScript 中文開發教程》。
https://github.com/ushelp/Angular-for-javascript-turorial由於版本生態的顛覆,以及官方缺少系統的 JavaScript 語言的應用開發指導教程,對於使用 JavaScript 語言開發 Angular 應用程序的用戶來說會遇到很多的困難和問題。
這份教程是使用純 JavaScript 來進行 Angular 開發指導,思想內容和步驟實現上都參考了官方教程,配套完整開發步驟和案例。力求從開發流程,組件定義,結構設計上不偏頗官方主旨,提供一個標準的 Angular 開發流程和項目結構。
同時能夠發現 Angular 跨平台的野心帶來了更大的責任和挑戰,Angular 團隊在純 JavaScript 上的測試用例還不夠全面充分,開發者在使用純 JavaScript 應用開發中有一些已經發現的 bug,可以藉助筆者的經驗教訓去注意規避和解決。還在用RC4 ,而且貌似上頭沒有要更新的意思。。。
angular1.x的怎麼玩耍呢
居然 final 了。我上個月開始學angular2,已經 rc 了,然後每2周一個更新,每次都要改很多配置或者寫法。
從來只聽說語言有聲明式,一個框架,忽悠什麼聲明式。標籤自己建的,類自己封裝的,數據自己綁定,是個框架都能做這些事情。谷歌真是越來越不行了。唯一正確的事情是公布這個是Final。Angular2 is done.
推薦閱讀:
※新舊交替VueJs到底好在哪?
※webpack打包後的代碼,如何部署到伺服器上?
※如何評價大漠窮秋的文章《Vue從Angular裡面抄了哪些東西?》?