App集成RN環(huán)境方案

開發(fā)環(huán)境的配置

1. 安裝node.js & package.json(依賴及版本配置文件)

2. react 0.47.2

3. podfile

  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge', # 如果RN版本 >= 0.47則加入此行
    'DevSupport', # 如果RN版本 >= 0.43挪圾,則需要加入此行才能開啟開發(fā)者菜單
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket', # 這個模塊是用于調(diào)試功能的
    # 在這里繼續(xù)添加你所需要的模塊
    'RCTActionSheet',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTSettings',
  ]
  # 如果你的RN版本 >= 0.42.0扯躺,則加入下面這行
  pod "Yoga", :path => "../node_modules/react-native/ReactCommon/yoga"

4. RCTRootView

RN在native頁面的展現(xiàn)主要通過RCTRootView御蒲。示例代碼(加載bundle包):

NSURL *jsCodeLocation;
    jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"index.ios" withExtension:@"bundle"];
    RCTRootView *rootView =
    [[RCTRootView alloc] initWithBundleURL: jsCodeLocation
                                moduleName: @"app"
                         initialProperties:
     nil launchOptions: nil];

    UIViewController *vc = [[UIViewController alloc] init];
    vc.view = rootView;
    [self presentViewController:vc animated:YES completion:nil];

5. 打包

RN項目可以打成一個bundle包歪沃,供他人使用贺奠,但是不含資源文件

整體思路

項目思路

  1. 安裝node.js
  2. 根據(jù)package.json npm start
  3. 調(diào)整項目結(jié)構(gòu)
  4. pod install

設(shè)計思路

1. 熱更新:

  1. RN開發(fā)后資源用相對路徑剪芍,打bundle后一起壓縮zip病苗,傳至后臺
  2. 客戶端請求接口惩嘉,根據(jù)項目ID浪耘,第一次請求或者版本號不相符乱灵,下載zip,解壓至Cache文件夾七冲。根據(jù)ID創(chuàng)建路徑
  3. 進入RN頁面前痛倚,如果不需要更新,直接找到bundle進入澜躺,如果需要更新蝉稳,下載替換
  4. 發(fā)生錯誤,刪除相應(yīng)路徑下文件掘鄙,重新下載耘戚。

2. 增量

3. 預(yù)加載

問題點

1. 安裝低版本的react,package里配置

2. 提示為register操漠,index入口名配置問題

3. 本地運行RN代碼收津,需要啟動npm,且http請求設(shè)置為允許

啟動npm后可以動態(tài)調(diào)試

4. react本地運行版本與bundle版本要保持一致

高了或者低了都不行

5. RN調(diào)用原生 Native類名

· push 需要獲取 Appdelegate導(dǎo)航控制器
· push or pop 要在main_queue中執(zhí)行浊伙,否則可能會失效
· 回調(diào)用RCTPromiseResolveBlock/RCTPromiseRejectBlock(官方的另一種方式不知道為何失效撞秋,待核查)

6. Native向RN傳參

如果用initialProperties,RN頁面內(nèi)如果采用navigation或者多級頁面吧黄,一定要逐層將props傳遞部服,傳遞后直接取出this.props.xxx

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拗慨,隨后出現(xiàn)的幾起案子廓八,更是在濱河造成了極大的恐慌,老刑警劉巖赵抢,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剧蹂,死亡現(xiàn)場離奇詭異,居然都是意外死亡烦却,警方通過查閱死者的電腦和手機宠叼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冒冬,你說我怎么就攤上這事伸蚯。” “怎么了简烤?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵剂邮,是天一觀的道長。 經(jīng)常有香客問我横侦,道長挥萌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任枉侧,我火速辦了婚禮引瀑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘榨馁。我一直安慰自己憨栽,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布辆影。 她就那樣靜靜地躺著徒像,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛙讥。 梳的紋絲不亂的頭發(fā)上锯蛀,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機與錄音次慢,去河邊找鬼旁涤。 笑死,一個胖子當(dāng)著我的面吹牛迫像,可吹牛的內(nèi)容都是我干的劈愚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼闻妓,長吁一口氣:“原來是場噩夢啊……” “哼菌羽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起由缆,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤注祖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后均唉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體是晨,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年舔箭,在試婚紗的時候發(fā)現(xiàn)自己被綠了罩缴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖箫章,靈堂內(nèi)的尸體忽然破棺而出烙荷,到底是詐尸還是另有隱情,我是刑警寧澤炉抒,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布奢讨,位于F島的核電站,受9級特大地震影響焰薄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扒袖,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一塞茅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧季率,春花似錦野瘦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泞遗,卻和暖如春惰许,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背史辙。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工汹买, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聊倔。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓晦毙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親耙蔑。 傳聞我的和親對象是個殘疾皇子见妒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

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