React團(tuán)隊(duì)推出了一款新工具,希望幫助開發(fā)人員減輕新建React應(yīng)用所引發(fā)的痛苦。
在一篇博文中,Dan Abramov介紹了Create React App。該工具讓開發(fā)人員可以使用一行命令新建一個(gè)React應(yīng)用程序——包括其構(gòu)建過(guò)程和依賴。這是官方支持的一種React應(yīng)用程序創(chuàng)建方式,不過(guò),它還不是一個(gè)和Ember CLI或Angular CLI本著同樣精神的“React CLI”。
開發(fā)人員使用三個(gè)命令就可以新建一個(gè)React應(yīng)用:
npm install -g create-react-appcreate-react-app hello-worldnpm start該工具將在現(xiàn)代React應(yīng)用中常見(jiàn)的Babel和Webpack命令抽象為一個(gè)命令集。Abramov表示,他們之所以構(gòu)建這個(gè)工具,是因?yàn)?ldquo;React生態(tài)系統(tǒng)普遍經(jīng)歷了工具不可阻擋地爆炸式增長(zhǎng)”:
綜合運(yùn)用這些工具需要對(duì)其中的每一種都有一些使用經(jīng)驗(yàn)。即便如此,還是很容易陷入同零碎的不兼容、未解決的peerDependencies及模糊的配置文件的斗爭(zhēng)中。那些工具有許多是插件平臺(tái),并不直接知道彼此的存在,需要客戶將它們連接在一起。這些工具都是獨(dú)立的發(fā)展和修改,教程很快就過(guò)期了。
理論上講,React入門并不需要了解很多,但構(gòu)建生產(chǎn)級(jí)應(yīng)用需要的就多了。隨著時(shí)間推移,React社區(qū)越來(lái)越依賴Babel和Webpack,它們成為默認(rèn)工具鏈的一部分。然而,這兩項(xiàng)技術(shù)卻經(jīng)常讓開發(fā)人員感到沮喪。例如,Babel不會(huì)對(duì)普通安裝作任何處理。按照Andrew Stuart的說(shuō)法,Babel默認(rèn)是無(wú)用的。Abramov重新界定了Babel的意圖,他說(shuō),“Babel沒(méi)有錯(cuò),它只是想要成為一個(gè)更為底層的工具。在我看來(lái),你不能(應(yīng)該)基于它進(jìn)行構(gòu)建。”
有經(jīng)驗(yàn)的React開發(fā)人員已經(jīng)給出了對(duì)他們來(lái)說(shuō)行得通的構(gòu)建過(guò)程。這個(gè)新工具將幫助社區(qū)里的其他人,讓那些沒(méi)有React經(jīng)驗(yàn)的人可以更快地入門。“Eject”特性讓那些超過(guò)工具發(fā)展速度的人可以不受其約束,走自己的路。Reddit用戶a_simple_pie評(píng)論說(shuō):
“Eject”真是這方面的一個(gè)殺手級(jí)特性。我想做的第一件事是增加SASS支持,因此,能夠eject很棒。
按照Abramov的說(shuō)法,Create React App目前還不具備一個(gè)完整CLI工具的廣度,這是正常的,因?yàn)樗?ldquo;一個(gè)用一周時(shí)間創(chuàng)建的黑客馬拉松項(xiàng)目”。他們還會(huì)繼續(xù)增強(qiáng)該工具的功能,比如增加測(cè)試。但是,據(jù)Abramov說(shuō),他們不會(huì)在短時(shí)間內(nèi)做太多工作,他們會(huì)“逐步改進(jìn)默認(rèn)設(shè)置,覆蓋更多的用例。”
該項(xiàng)目的GitHub頁(yè)面提供了更多有關(guān)該工具功能的信息。