當我們就Apple的“ MVC非MVC ”討論術(shù)語泛濫問題時,F(xiàn)acebook于上個月正式開源的React Native似乎亦是如此。主張“Learn once, write everywhere”,讓開發(fā)者用JavaScript開發(fā)移動原生應用,此景雖好,但事實并非如此。React Native 其中很大一部分利用了原生架構(gòu),卻也包含了一些非原生架構(gòu):
以上列出的種種多多少少體現(xiàn)了React Native的一些優(yōu)勢,但React Native本質(zhì)上并非原生。 另外,React與不久前剛發(fā)布的Components框架的基本原理跟蘋果關(guān)于MVC模式的誤解實在是不謀而合:
圖中所示:控制器(Controller)持續(xù)通過視圖(View)顯示數(shù)據(jù)并不能體現(xiàn)MVC的具體含義,除非將其理解為“Massive View Controller”。
在Components和React Native中,用View(UIView/NSView)將“實現(xiàn)UI的可變狀態(tài)”替換為“模型(單一)功能”,發(fā)揮drawRect::的作用。以后面臨的問題不再是創(chuàng)建新的完整框架,而是通過視圖顯示數(shù)據(jù)。解決方法是,將畫板上的Custom View拖到UI上,執(zhí)行drawRect::。繪制視圖(以及/或者將組件設置為視圖狀態(tài)突變)比drawRect::更凸顯狀態(tài)性,而非削弱。
再強調(diào)一下,這個解決方案還不錯,只是沒有循規(guī)蹈矩罷了。據(jù)我所知,目前熱捧React Native的主要是一些Web開發(fā)者,他們?nèi)缃駸o需學習Objective-C/Swift或Java,就能開發(fā)“原生”應用了。不過,React Native究竟是否體驗與宣傳如一還尚未定論。
最后,“react”貌似是指“單向響應數(shù)據(jù)流”——更讓人摸不著頭腦的行內(nèi)話,我想以后會常常遇到。
(編譯/張新慧 責編/唐小引)
文章來源: Metablog
CSDN移動將持續(xù)為您優(yōu)選移動開發(fā)的精華內(nèi)容,共同探討移動開發(fā)的技術(shù)熱點話題,涵蓋移動應用、開發(fā)工具、移動游戲及引擎、智能硬件、物聯(lián)網(wǎng)等方方面面,如果您有想分享的技術(shù)、觀點,可通過電子郵件(tangxy#csdn.net,請把#改成@)投稿。
第一時間掌握最新移動開發(fā)相關(guān)信息和技術(shù),請關(guān)注mobilehub公眾微信號(ID: mobilehub)。