Redux
Redux 為應(yīng)用提供了事務(wù)式的,確定性的狀態(tài)管理支持。在Redux中,我們僅可以通過Action來修改當(dāng)前的應(yīng)用狀態(tài)。如果你希望深入了解為啥這么做,可以參閱 “10 Tips for Better Redux Architecture.” 或者跟著 Dan Abramov的官方課程:
- “Getting Started with Redux”
- “Building React Applications with Idiomatic Redux”
實(shí)際上即使你不使用Redux,也很推薦學(xué)習(xí)Redux的設(shè)計(jì)思想,它可以給你很多關(guān)于狀態(tài)管理的最佳實(shí)踐,告訴你純函數(shù)的價(jià)值所在,以及告訴你何謂Reducers,何謂General-Purpose函數(shù)。在Redux的工程實(shí)踐中,對(duì)于異步Action的處理也是值得討論的:
- redux-saga*: A synchronous-style side-effect library for Redux. Use this to manage I/O (such as handling network requests).
Angular 2*
Angular 2 脫胎于風(fēng)靡一時(shí)的Angular 1,鑒于當(dāng)年瘋狂的流行度,學(xué)會(huì)這個(gè)會(huì)是你簡(jiǎn)歷上濃墨重彩的一筆,不過我還是推薦先學(xué)習(xí)React。我個(gè)人也認(rèn)為React是優(yōu)于Angular 2的,React over Angular 2 because:
- 它更簡(jiǎn)單
- 社區(qū)很強(qiáng)大
RxJS
RxJS 是JavaScript中一系列響應(yīng)式編程工具的集合,就好比流處理領(lǐng)域的Lodash,它把響應(yīng)式編程帶入到了JavaScript的領(lǐng)域。ECMAScript Observables是stage-1階段的草稿,RxJS 5+則是當(dāng)前的標(biāo)準(zhǔn)實(shí)現(xiàn)。雖然我個(gè)人非常喜歡RxJS,但是如果你想在工程中使用RxJS的話還是需要考慮下,因?yàn)槠鋬?nèi)置了很多的Operators,其會(huì)增加你的包體尺寸。不過我們可以通過僅引入部分所需要的庫(kù)來解決這個(gè)問題,最后大概只會(huì)使得包體增加200KB左右吧。
為什么沒有提到其他框架?
有不少人問我為啥沒有把他們喜歡的框架也列舉進(jìn)來,對(duì)于我而言我會(huì)先考慮:這個(gè)在真實(shí)的工作中會(huì)所有幫助嗎?當(dāng)然,這一點(diǎn)見仁見智,我也是打算從一些所謂的人氣投票中一窺變化。首先,我會(huì)去Google Trends中查看各個(gè)框架關(guān)聯(lián)關(guān)鍵詞的被搜索情況:

另一個(gè)很有幫助的網(wǎng)站就是http://Indeed.com,會(huì)聚合不同站點(diǎn)上對(duì)于不同職位的開發(fā)者的需求信息,可以看出目前招聘上對(duì)于前端開發(fā)者技能需求的情況為:

在上圖中,Angular(Angular 1+Angular 2)還是高于React的,不過我個(gè)人還是會(huì)推薦React,有如下幾個(gè)原因吧:
- More people are interested in learning React than Angular
- React significantly leads Angular in user satisfaction