前端框架這么多,該何去何從勺卢?

作為一個軟件開發(fā)者伙判,最大的挑戰(zhàn)就是在不斷涌現(xiàn)的新技術(shù)中進(jìn)行取舍,持續(xù)學(xué)習(xí)是從事這一行業(yè)的必備技能黑忱。在這個領(lǐng)域里宴抚,技術(shù)更新最快地又非前端莫屬了。各種框架的出現(xiàn)甫煞、版本的更新此起彼伏菇曲,呈現(xiàn)出一派欣欣向榮之景。

在項目中必不可少的便是前端抚吠,它是系統(tǒng)的門面常潮、是用戶對系統(tǒng)最直接的體驗(yàn),顏值高低也是決定系統(tǒng)好壞的關(guān)鍵楷力,那么作為一名軟件開發(fā)攻城獅喊式,怎么能放棄這片藍(lán)海呢孵户?沒準(zhǔn)了解了解前端的世界,就能多一項技能岔留、升職加薪夏哭、贏取白(gao)富(fu)美(shuai)、走向人生巔峰呢献联?

那么,在一個項目中酱固,我們要回答的第一個問題就是“這么多的框架,該使用哪一個运悲?”這篇文章將嘗試從項目實(shí)施相關(guān)方面入手,對目前大熱框架的特點(diǎn)進(jìn)行分析班眯,幫助你選擇最合適的一款希停。

由于篇幅有限、框架眾多署隘,在分析之前,我們從版本更新頻度和社區(qū)活躍度來進(jìn)行初步的篩選违崇。已經(jīng)出現(xiàn)了比較久的BackboneKnockout, 目前流行度正在持續(xù)衰退,說明市場已經(jīng)做出了選擇诊霹,市面上出現(xiàn)了更有競爭力的替代品; 還有aurelia這類的新涌現(xiàn)者羞延,需要等待時間的檢驗(yàn)。

但是在一個商業(yè)項目中脾还,一個有活躍社區(qū)支撐,并能得到長期支持的框架無疑能給我們更大的信心鄙漏。因此,Angular, Ember巩步,Vue或者React都是理想的選擇媚创。

那么在項目實(shí)施中,我們一般會關(guān)注哪些方面呢?

有過前端開發(fā)經(jīng)驗(yàn)的同僚們可能會想到:要有可復(fù)用的組件鳄橘,要控制質(zhì)量做測試和靜態(tài)檢查,要有組件隔離的樣式方便實(shí)現(xiàn)Responsive术徊,要打包部署方便鲸湃,最好學(xué)起來不要太復(fù)雜,方便能力建設(shè)暗挑、節(jié)省招聘成本等等。

接下來垃它,我們將從組件復(fù)用烹看、測試和學(xué)習(xí)曲線這三個主要的方面對Angular4,Ember.jsVue.jsReact這四個當(dāng)前最流行的框架來做更深入的分析惯殊,提供更具體的參考。

1. 可復(fù)用的組件

組件復(fù)用是每個項目都會重點(diǎn)關(guān)注的一個維度务热。合適的、職責(zé)單一的組件會大大提升新特性的開發(fā)效率和工程的可維護(hù)性己儒,也能方便地進(jìn)行測試陕习。那么他們的表現(xiàn)都如何呢:

概括起來,就是Vue冻璃、Component的組件相對靈活、輕量省艳,添加依賴就可以無縫集成到遺留系統(tǒng)中。對于從0到1的系統(tǒng)跋炕,也可以使用新的實(shí)踐來構(gòu)建工程,例如ES6、Webpack等技術(shù)捂贿。Angular4官方推薦使用TypeScript胳嘲,這需要單獨(dú)構(gòu)建和打包,不方便與遺留系統(tǒng)集成了牛。Ember.js自定義了一整套生態(tài),基于CoC理念的設(shè)計甫窟,采用了前端工程中比較前沿的實(shí)踐和標(biāo)準(zhǔn)蛙婴,很難與遺留系統(tǒng)集成,更適合在新項目中使用敬锐。至于數(shù)據(jù)綁定,各有優(yōu)勢径玖。雙向綁定在表單交互多的場景中更便捷颤介,單向綁定在管理跟蹤記錄組件狀態(tài)時更高效。組件狀態(tài)更新滚朵,各有不同的實(shí)現(xiàn):

Vue2.js通過定義setter來監(jiān)聽狀態(tài)變化,特殊場景需要特殊的API支持, 基于virtual DOM的視圖更新韵吨。

React在組件的狀態(tài)或?qū)傩缘淖兓笠普彩腔趘irtual DOM的視圖更新。

Angular4在引起狀態(tài)變化的時刻漏峰,框架自動觸發(fā)臟檢查,也可以手動執(zhí)行臟檢查倔喂,直接操作HTML DOM更新視圖。

Ember.js提供數(shù)據(jù)模型席噩,所有數(shù)據(jù)的操作通過API執(zhí)行,使用Glimmer引擎進(jìn)行HTML渲染和更新鲁捏。

其中萧芙,主要的區(qū)別是Angular4是通過事件監(jiān)聽,對比數(shù)據(jù)更新双揪,直接操作DOM來更新視圖,而其它都通過Virtual DOM的思路來更新視圖运吓。

2. 組件測試

測試是提高軟件質(zhì)量的有效手段疯趟,易于編寫測試的框架,能降低編寫測試的成本倦青,充足的測試也能提高我們交付軟件的信心。它們在組件測試方面的比較如下:

可見产镐,Vue, React測試靈活踢步,可以根據(jù)項目具體情況來定制,但是沒有統(tǒng)一的測試實(shí)踐規(guī)范获印,對開發(fā)人員的能力有較大依賴兼丰。Angular4和Ember概念多,有官方推薦的實(shí)踐地粪,要完全掌握難度大琐谤,優(yōu)勢是實(shí)現(xiàn)起來更規(guī)范。

3. 學(xué)習(xí)曲線

在技術(shù)選型過程中质礼,保證項目按時交付,控制風(fēng)險眶蕉,團(tuán)隊能力建設(shè)提升,都是需要考慮的因素碱璃。作為一個軟件服務(wù)公司饭入,如何快速的提升人員能力,選用學(xué)習(xí)曲線合適的框架谐丢,控制項目成本也是一門技術(shù)活。下面讥珍,對使用這些框架的難度進(jìn)行了一些簡要分析:

總結(jié)

通過上面三個維度的分析窄瘟,我們發(fā)現(xiàn)Vue.js和React的重點(diǎn)更側(cè)重于創(chuàng)建可復(fù)用、易于測試纲酗、能靈活集成的組件新蟆。當(dāng)然,通過其它擴(kuò)展組件琼稻,以及一些腳手架插件的支持,也可以方便的搭建一個采用最新實(shí)踐的前端應(yīng)用的構(gòu)建框架鸠补。它們最大的優(yōu)點(diǎn)是按需定制嘀掸,學(xué)習(xí)曲線平滑,構(gòu)建出來的應(yīng)用小而精睬塌。

相對來說歇万,Angular4和Ember是大而全的框架勋陪,它們更側(cè)重于大型前端工程的構(gòu)建,為開發(fā)人員屏蔽項目構(gòu)建底層的細(xì)節(jié)寒锚,提出了自己的一套解決方案违孝。使用它們的難點(diǎn)是要度過前期曲線陡峭的學(xué)習(xí)期,優(yōu)點(diǎn)是由于使用了標(biāo)準(zhǔn)化的開發(fā)方式等浊,后期能極大的提高開發(fā)生產(chǎn)力,提升開發(fā)效率轧飞。

最后撒踪,說了這么多,大家在具體選型時還是要首先分析自己的需求和現(xiàn)狀掸绞,然后再做選擇耕捞。不求最酷炫衔掸,只求最合適俺抽!

如果有人讓你推薦前端技術(shù)書磷斧,請讓他看這個列表 ->《經(jīng)典前端技術(shù)書籍

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市冕末,隨后出現(xiàn)的幾起案子侣颂,更是在濱河造成了極大的恐慌,老刑警劉巖憔晒,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異仅炊,居然都是意外死亡澎蛛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進(jìn)店門呆馁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毁兆,“玉大人,你說我怎么就攤上這事纺腊【グ牛” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵壹粟,是天一觀的道長。 經(jīng)常有香客問我趁仙,道長垦页,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任坐儿,我火速辦了婚禮宋光,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘逛漫。我一直安慰自己赘艳,他們只是感情好酌毡,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布枷踏。 她就那樣靜靜地躺著,像睡著了一般旭蠕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上佑稠,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天旗芬,我揣著相機(jī)與錄音,去河邊找鬼幔嫂。 笑死这刷,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的暇屋。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼昙衅,長吁一口氣:“原來是場噩夢啊……” “哼定鸟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起啼县,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤沸久,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后子刮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窑睁,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡葵孤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年橱赠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吓著。...
    茶點(diǎn)故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡送挑,死狀恐怖暖眼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情司澎,我是刑警寧澤栋豫,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站丧鸯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏围肥。R本人自食惡果不足惜蜂怎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望氢伟。 院中可真熱鬧幽歼,春花似錦、人聲如沸试躏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至椅您,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雪隧,已是汗流浹背员舵。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留庄拇,地道東北人韭邓。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像女淑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子屈张,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 作為一個軟件開發(fā)者,最大的挑戰(zhàn)就是面對不斷涌現(xiàn)的新技術(shù)劝贸,持續(xù)地學(xué)習(xí)是從事這個行業(yè)的必備技能。在這個領(lǐng)域里映九,技術(shù)更新...
    大路無疆閱讀 837評論 0 5
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,348評論 25 707
  • 作為一個軟件開發(fā)者宫补,最大的挑戰(zhàn)就是在不斷涌現(xiàn)的新技術(shù)中進(jìn)行取舍,持續(xù)學(xué)習(xí)是從事這一行業(yè)的必備技能粉怕。在這個領(lǐng)域里,技...
    ThoughtWorks閱讀 2,755評論 0 12
  • 總目錄 上一章:思硯 第9章:逼硯 正在省城醫(yī)院參加業(yè)務(wù)交流學(xué)習(xí)的李淑玲荞雏,突然接到兒子周國政的班主任打來的電話平酿。...
    深山女巫一閱讀 1,104評論 53 65
  • 暗黑幣 DarkCoin 創(chuàng)造了X11算法悦陋,該算法適合CPU和GPU挖礦(GPU效率更優(yōu)),相比其它scrypt系...
    飛狗未來閱讀 1,645評論 0 0