前端框架這么多拔莱,該何去何從碗降?

作為一個(gè)軟件開發(fā)者,最大的挑戰(zhàn)就是面對(duì)不斷涌現(xiàn)的新技術(shù)塘秦,持續(xù)地學(xué)習(xí)是從事這個(gè)行業(yè)的必備技能讼渊。在這個(gè)領(lǐng)域里,技術(shù)更新最快地又非前端莫屬了嗤形。各種框架的出現(xiàn)精偿,版本的更新此起彼伏,熱火朝天赋兵,一派欣欣向榮笔咽。而且在項(xiàng)目中,哪里會(huì)少的了前端霹期,它是系統(tǒng)的門面叶组,是用戶對(duì)系統(tǒng)最直接的體驗(yàn),顏值高低也是決定系統(tǒng)好壞的關(guān)鍵历造,那么作為一名軟件開發(fā)攻城獅甩十,怎么能放棄這片藍(lán)海船庇,不了解了解前端的世界,多一項(xiàng)技能侣监,升職加薪鸭轮,贏取白(gao)富(fu)美(shuai),走向人生巔峰呢橄霉?

那么窃爷,在一個(gè)項(xiàng)目中,我們要回答的第一個(gè)問題就是這么多的框架姓蜂,該使用哪一個(gè)按厘?在這篇文章中,將嘗試從項(xiàng)目實(shí)施相關(guān)的一些方面入手钱慢,對(duì)目前大熱框架的特點(diǎn)進(jìn)行分析逮京,幫助你選擇最合適的一款。

由于篇幅有限束莫、框架眾多懒棉,在分析之前,我們從版本更新頻度和社區(qū)活躍度來進(jìn)行初步的篩選麦箍。已經(jīng)出現(xiàn)了比較久的Backbone和Knockout, 目前的流行度持續(xù)衰退漓藕,說明市場已經(jīng)做出了選擇,市面上出現(xiàn)了更有競爭力的替代品挟裂;也有新涌現(xiàn)的如aurelia享钞。 但是在一個(gè)商業(yè)項(xiàng)目中,一個(gè)有活躍社區(qū)支撐诀蓉,并能得到長期支持的框架無疑能給我們更大的信心栗竖,因此,Angular, Ember渠啤,Vue或者React都是一個(gè)理想的選擇狐肢。那么在項(xiàng)目實(shí)施中,我們一般會(huì)關(guān)注哪些方面呢沥曹? 有過前端開發(fā)經(jīng)驗(yàn)的同僚們可能會(huì)想到份名,要有可復(fù)用的組件,要控制質(zhì)量做測試和靜態(tài)檢查妓美,要有組件隔離的樣式方便實(shí)現(xiàn)Responsive僵腺,要打包部署方便,最好學(xué)起來不要太復(fù)雜壶栋,方便能力建設(shè)辰如、節(jié)省招聘成本等等。接下來贵试,我們將從組件復(fù)用琉兜,測試和學(xué)習(xí)曲線這三個(gè)主要的方面對(duì)Angular4, Ember.js凯正,Vue.js和React這四個(gè)當(dāng)前最流行的框架來做更深入的分析,提供更具體的參考豌蟋。

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

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

概括起來,就是Vue, Component的組件相對(duì)靈活往声、輕量,添加依賴就可以無縫集成到遺留系統(tǒng)中戳吝。對(duì)于從0到1的系統(tǒng)浩销,也可以使用新的實(shí)踐來構(gòu)建工程,例如ES6听哭、Webpack等技術(shù)慢洋。Angular4官方推薦使用TypeScript, 如果使用TypeScript,需要單獨(dú)構(gòu)建和打包陆盘,不方便與遺留系統(tǒng)集成普筹。Ember.js由于自定義了一整套生態(tài),基于CoC理念的設(shè)計(jì)隘马,并采用了前端工程比較前沿的實(shí)踐和標(biāo)準(zhǔn)太防,很難與遺留系統(tǒng)集成,在新項(xiàng)目更適合使用酸员。至于數(shù)據(jù)綁定蜒车,各有優(yōu)勢(shì)。雙向綁定在表單交互多的場景中更便捷幔嗦,單向綁定在管理跟蹤記錄組件狀態(tài)時(shí)更高效酿愧。組件狀態(tài)更新,各有不同的實(shí)現(xiàn):

Vue.js通過定義setter來監(jiān)聽狀態(tài)變化邀泉,特殊場景需要特殊的API支持, 通過virtual DOM重新渲染視圖嬉挡。

React通過setState, 觸發(fā)組件數(shù)據(jù)/屬性發(fā)生變化,通過virtual DOM重新渲染視圖汇恤。

Angular4在引起狀態(tài)變化的時(shí)刻庞钢,框架自動(dòng)觸發(fā)臟檢查,也可以手動(dòng)執(zhí)行臟檢查屁置。

Ember.js提供數(shù)據(jù)模型焊夸,所有數(shù)據(jù)的操作通過API執(zhí)行,數(shù)據(jù)產(chǎn)生變化就更新視圖蓝角。

其中阱穗,主要的區(qū)別是Angular4是通過事件驅(qū)動(dòng)饭冬,對(duì)比數(shù)據(jù)更新,直接操作DOM來更新視圖揪阶,而其它都通過Virtual DOM來更新視圖昌抠。

2. 組件測試

測試是提高軟件質(zhì)量的有效手段,易于編寫測試的框架鲁僚,能降低編寫測試的成本炊苫,充足的測試也能提高我們交付軟件的信心。它們?cè)诮M件測試方面的比較如下:

可見冰沙,Vue, React測試靈活侨艾,根據(jù)項(xiàng)目具體情況來定制,但是沒有統(tǒng)一的測試實(shí)踐規(guī)范拓挥,對(duì)開發(fā)人員的能力有較大依賴唠梨。Angular4和Ember, 概念多,有官方推薦的實(shí)踐侥啤,要完全掌握的難度大当叭,優(yōu)勢(shì)是實(shí)現(xiàn)起來更規(guī)范。

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

在技術(shù)選型過程中盖灸,保證項(xiàng)目按時(shí)交付蚁鳖,控制風(fēng)險(xiǎn),團(tuán)隊(duì)能力建設(shè)提升赁炎,都是需要考慮的因素醉箕。作為一個(gè)軟件服務(wù)公司,如何快速的提升人員能力徙垫,選用學(xué)習(xí)曲線合適的框架琅攘,控制項(xiàng)目成本也是一門技術(shù)活。下面松邪,對(duì)使用這些框架的難度進(jìn)行了一些簡要分析:

總結(jié)

通過上面三個(gè)維度的分析坞琴,我們發(fā)現(xiàn)Vue.js和React的重點(diǎn)更側(cè)重與創(chuàng)建可復(fù)用,易于測試逗抑,能靈活集成的組件剧辐。當(dāng)然,通過其它擴(kuò)展組件邮府,以及一些腳手架插件的支持荧关,也可以方便的搭建一個(gè)采用最新實(shí)踐的前端應(yīng)用的構(gòu)建框架。他們最大的優(yōu)點(diǎn)是按需定制褂傀,學(xué)習(xí)曲線平滑忍啤,構(gòu)建出來的應(yīng)用小而精。相對(duì)來說,Angular4和Ember是大而全的框架同波,他們目標(biāo)是針對(duì)大型前端工程的構(gòu)建鳄梅,為開發(fā)人員屏蔽項(xiàng)目構(gòu)建底層的細(xì)節(jié),提出了自己的一攬子解決方案未檩。使用它們的難點(diǎn)是要度過前期曲線陡峭的學(xué)習(xí)期戴尸,優(yōu)點(diǎn)是由于使用了標(biāo)準(zhǔn)化的開發(fā)方式,后期能極大的提高開發(fā)生產(chǎn)力冤狡,提升開發(fā)效率孙蒙。

最后,說了這么多悲雳,大家在具體選型時(shí)還是首先要分析自己的需求和現(xiàn)狀挎峦,然后再做選擇。不求最酷炫合瓢,只求最合適浑测!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市歪玲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掷匠,老刑警劉巖滥崩,帶你破解...
    沈念sama閱讀 223,207評(píng)論 6 521
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異讹语,居然都是意外死亡钙皮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,455評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門顽决,熙熙樓的掌柜王于貴愁眉苦臉地迎上來短条,“玉大人,你說我怎么就攤上這事才菠∪资保” “怎么了?”我有些...
    開封第一講書人閱讀 170,031評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵赋访,是天一觀的道長可都。 經(jīng)常有香客問我,道長蚓耽,這世上最難降的妖魔是什么渠牲? 我笑而不...
    開封第一講書人閱讀 60,334評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮步悠,結(jié)果婚禮上签杈,老公的妹妹穿的比我還像新娘。我一直安慰自己鼎兽,他們只是感情好答姥,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,322評(píng)論 6 398
  • 文/花漫 我一把揭開白布铣除。 她就那樣靜靜地躺著,像睡著了一般踢涌。 火紅的嫁衣襯著肌膚如雪通孽。 梳的紋絲不亂的頭發(fā)上录语,一...
    開封第一講書人閱讀 52,895評(píng)論 1 314
  • 那天产弹,我揣著相機(jī)與錄音,去河邊找鬼遗契。 笑死潘明,一個(gè)胖子當(dāng)著我的面吹牛行剂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钳降,決...
    沈念sama閱讀 41,300評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼厚宰,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了遂填?” 一聲冷哼從身側(cè)響起铲觉,我...
    開封第一講書人閱讀 40,264評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吓坚,沒想到半個(gè)月后撵幽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,784評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡礁击,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,870評(píng)論 3 343
  • 正文 我和宋清朗相戀三年盐杂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哆窿。...
    茶點(diǎn)故事閱讀 40,989評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡链烈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挚躯,到底是詐尸還是另有隱情强衡,我是刑警寧澤,帶...
    沈念sama閱讀 36,649評(píng)論 5 351
  • 正文 年R本政府宣布码荔,位于F島的核電站食侮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏目胡。R本人自食惡果不足惜锯七,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,331評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望誉己。 院中可真熱鬧眉尸,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,814評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至袱蜡,卻和暖如春丝蹭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坪蚁。 一陣腳步聲響...
    開封第一講書人閱讀 33,940評(píng)論 1 275
  • 我被黑心中介騙來泰國打工奔穿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人敏晤。 一個(gè)月前我還...
    沈念sama閱讀 49,452評(píng)論 3 379
  • 正文 我出身青樓贱田,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嘴脾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子男摧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,995評(píng)論 2 361

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,352評(píng)論 25 707
  • 此時(shí)此刻坐在電腦前,又到寫寫寫的時(shí)候译打,腦袋一片漿糊耗拓,不知道該如何下手。 我是有多么的不愛寫作奏司? 自從開始寫作乔询,每天...
    藍(lán)精靈的生活閱讀 406評(píng)論 5 2
  • 17.5.28揚(yáng)州,瓜州云上音樂節(jié)
    叫修的女孩想要一杯忘憂酒閱讀 490評(píng)論 2 2
  • 夢(mèng) 夢(mèng)到了Keta结澄,他在我的家,我們?cè)瓉碜≡谖业募野逗唬瑝?mèng)到的內(nèi)容是我們分開之后我去那個(gè)屋子里麻献,他說他所有的衣服都在這...
    AliceLeon閱讀 244評(píng)論 0 0
  • 的新聞,看到有人罵你猜扮,然后就讓我很心痛. 張杰勉吻、 你憑什么讓我罵完他們,看到你還是 能微笑旅赢? 張杰齿桃、憑什么? 憑什...
    橙色小蘑菇閱讀 117評(píng)論 0 9