最近學(xué)習(xí)了下react-native,也使用它做了半個(gè)應(yīng)用,這里簡單地記錄下一些心得。
不易上手
react-native對外宣稱“Learn once, write anywhere”,這個(gè)口號與我們平常見到的各種游戲引擎標(biāo)榜自己跨平臺完全平一樣。這里的Learn once是指我們需要系統(tǒng)地學(xué)習(xí)react-native,那么react-native的學(xué)習(xí)曲線是平滑還是陡峭呢?就本人的親身體會來說,學(xué)習(xí)起來還是比較困難的:
react-native是由前端框架react發(fā)展而來的,它的主要目標(biāo)就是用前端來開發(fā)移動端應(yīng)用,不可避免的帶有著前端開發(fā)人員的思維邏輯。對于前端人員來說,學(xué)習(xí)react-native就像是隨手換了下工具,工具的外形可能跟以前稍有不同,但它的使用方式還是以前那一套,因此能夠很快地達(dá)到得心應(yīng)手的程度。但對于移動端轉(zhuǎn)型而來的開發(fā)者來說,就像由windows換到mac系統(tǒng)一樣,到處都充斥著不適應(yīng)。
資料較少
react-native也是最近兩三年發(fā)展起來了,坑填的差不多了,但依然可能碰到一些沒填上的坑。中文資料較少,https://reactnative.cn 上的文檔太簡單,比如Navigation,短短的一頁居然介紹了React Navigation與NavigationIOS兩種導(dǎo)航方式。這篇doc中對我最有用的絕對是《開發(fā)環(huán)境搭建》這一篇了,其余的都只能做為參考了解下而已。
MVC中的V
網(wǎng)上很多人認(rèn)為因?yàn)閞eact-native及week的出現(xiàn),移動端被前端取代是遲早的事,包括我自己也這樣認(rèn)為,并感到一定程度的憂慮。不過在我使用了react-native一段時(shí)間后,這種想法就不在那么強(qiáng)烈了。react-native的愿景是用前端來寫移動端應(yīng)用,但現(xiàn)在看來也只是邁出了第一步而已,離達(dá)成還有很長的一段時(shí)間。
是的,使用react-native的確可以比較快速的開發(fā)出一些用戶交互較為頻繁的應(yīng)用,這是將前端的UI布局靈活的特點(diǎn)充分發(fā)揮出來而已。而涉及到與硬件交互,邏輯比較復(fù)雜的功能開發(fā),這些都是移動端的優(yōu)勢地盤,前端想攻略下來還需要花費(fèi)更長的時(shí)間。
react-native將原生模塊封裝成開發(fā)者可以使用的前端模塊,開發(fā)者可以使用前端代碼對UI界面進(jìn)行布局并處理用戶的交互。這些工作以前是由原生側(cè)MVC模式中的V來做的,也就是說react-native取代了V,但對于余下的兩個(gè)模擬依然沒有順利地接手。
平臺差異
因react-native對于原生模塊的復(fù)用,導(dǎo)致了控件的平臺差異性:NavigationIOS只適用于iOS平臺、控件的某些屬性只針對單一平臺。
UI布局方便
原生開發(fā)布局iOS要關(guān)注一個(gè)控件相對于其它控件的上下左右約束條件,并精確定位其尺度。而使用react-native布局界面,將屏幕分割成不同大小的模塊,然后將對應(yīng)的View填進(jìn)就可以了。
上面列舉了一些我這些天使用react-native的初步印象,后面會更新使用的具體細(xì)節(jié)問題。希望在應(yīng)用開發(fā)完畢時(shí),也能夠完全的掌握react-native。