競爭不僅存在于編程語言之間,框架之間的對比也是無處不在。Vue早期的開發(fā)靈感來源于Angular.js,雖然新的Angular的許多實現(xiàn)都已經(jīng)重寫,但是雙方在語法方面仍有很多相似性,自然避免不了對比的命運。
2017年10月14日,Vue.js 2.5發(fā)布,時隔半個月,Angular 5也正式可用了。本就是彼此競爭的常客,如今版本發(fā)布時間這么相近,新一輪的競爭儼然已經(jīng)開始。
Vue.js 2.5發(fā)布
經(jīng)過不斷的更新和發(fā)展,Vue已經(jīng)成長為最受歡迎的框架之一。 Vue 2.5 Level E 發(fā)布,早先一直在傳的有關(guān)TypeScript的改進(jìn),在這個版本中也獲得了體現(xiàn)。接下來我們先來看一下,Vue.js的新功能包括哪些。
更好的TypeScript集成:Vue.js 2.5大大改進(jìn)了類型聲明,Vetur 等編輯器擴(kuò)展功能更強(qiáng)大,同時也為純 JavaScript 用戶提供更好的Intellisense 支持;
更好的錯誤處理:Vue.js 2.5中引入了新的errorCaptured鉤子。 具有此鉤子的組件捕獲其子組件樹中的所有錯誤,其與React 16引入的錯誤邊界概念相似。
與環(huán)境無關(guān)的服務(wù)端渲染:Vue.js 2.5 中發(fā)布了一個與環(huán)境無關(guān)的 vue-server-renderer 版本,可以在瀏覽器或純 JavaScript 引擎中使用。
Vue的創(chuàng)始人尤雨溪在談到Vue的理念時表示:“Vue有一個其它框架都沒有的理念,那就是把高大上的思想變得平易近人。”沒錯兒,Vue一直以來也是秉持著容易上手和文檔友好的觀念來進(jìn)行更新的。
Angular 5發(fā)布
Angular 5更專注于“smaller, faster, and easier to use”,這與Vue“平易近人”的理念不謀而合。新版本中擁有全新的構(gòu)建優(yōu)化器,默認(rèn)情況下,在CLI創(chuàng)建production build時運行。據(jù)悉,該構(gòu)建優(yōu)化器主要有兩個功能,其一是精簡應(yīng)用程序,它會標(biāo)記應(yīng)用程序的每個部分,然后刪除不必要的部分。其二是在Angular運行時代碼中刪除Angular decorators,decorators是由編譯器使用,在運行時并不需要。這些做法減少了JavaScript軟件包的大小,并為用戶提高了應(yīng)用程序的啟動速度。
Angular 5.0允許用戶通過Angular Universal State Transfer API和DOM共享應(yīng)用程序的服務(wù)器端和客戶端版本之間的應(yīng)用程序狀態(tài)。ServerTransferStateModule和BrowserTransferStateModule允許用戶使用平臺服務(wù)器生成有關(guān)信息,并傳輸?shù)娇蛻舳恕?/p>
其它新功能還有很多,例如改進(jìn)編譯器以支持增量編譯,支持TypeScript變換,支持decorators改進(jìn)。
相繼發(fā)布新版本,雙方較量再升級
Vue與Angular從誕生之初似乎就難以避免被對比的命運,除了一些媒體和技術(shù)人員在對這兩款框架做橫向?qū)Ρ戎猓岸藭r間某乎上Vue作者和Angular前官方布道者也真刀實槍的開戰(zhàn)了。
尤雨溪從CLI/工具鏈、異步加載模塊、單元測試和集成測試、TypeScript、AOT & Treeshaking以及團(tuán)隊等方面對大漠窮秋進(jìn)行了回應(yīng)。本文不對兩位開發(fā)者的言論做正確性的評判,只從該事件中窺一斑而見全豹,粗淺分析Vue和Angular兩者之間的差別。
首先,兩個框架對于CLI的定位不一樣,Vue-cli只是一個初始化工具,真正負(fù)責(zé)打包的是webpack配置和npm腳本,而Angular/cli是一個全包式的命令行工具。在對TypeScript的支持方面,顯然以TypeScript為主導(dǎo)的Angular天然就有優(yōu)勢,Angular 5支持TypeScript變換,但是Vue也沒有閑著,我們看到Vue自2.0版本就開始支持TypeScript,新版本中對于TypeScript的集成更進(jìn)一步了。
關(guān)于輕量級,毫無疑問輕量頁面更適合使用Vue,而Angular雖然更適合重型應(yīng)用,但也在輕量化方面做了一些嘗試,其既可以選擇組件化,也可以選擇不組件化,僅以模板形式與數(shù)據(jù)結(jié)合。在團(tuán)隊方面,背靠Google這棵大樹的Angular顯然比Vue更具優(yōu)勢。
寫在最后
“任何不以場景為前提的設(shè)計都是耍流氓,任何太不切實際的理想終將覆滅,任何想永存的都是臨時方案。”框架之間的對比永遠(yuǎn)不是為了戰(zhàn)勝某一個,而是相互促進(jìn)、相互學(xué)習(xí),幫助開發(fā)者和企業(yè)更好的開發(fā)應(yīng)用。