成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

在現(xiàn)有的原生應(yīng)用中嵌入React Native頁面(ios版)

chanjarster / 2003人閱讀

摘要:通常情況下我們有兩種方式來構(gòu)建一個(gè)使用技術(shù)的應(yīng)用包原生。應(yīng)用入口由原生代碼控制,頁面跳轉(zhuǎn)邏輯由原生主導(dǎo)。當(dāng)采用第二種方式時(shí)就需要在原生應(yīng)用中嵌入頁面。在中快速地創(chuàng)建一個(gè)項(xiàng)目。第五步,原生頁面調(diào)用頁面在中添加如圖代碼。

通常情況下我們有兩種方式來構(gòu)建一個(gè)使用RN技術(shù)的應(yīng)用:

RN包原生。應(yīng)用入口由RN控制,頁面跳轉(zhuǎn)邏輯也由RN主導(dǎo),當(dāng)涉及做原生增強(qiáng)時(shí)使用RN的API構(gòu)建一些原生的模塊并暴露出來給RN調(diào)用。

原生包RN。應(yīng)用入口由原生代碼控制,頁面跳轉(zhuǎn)邏輯由原生主導(dǎo)。某些跨平臺(tái)業(yè)務(wù)邏輯頁面由RN開發(fā)。充分利用RN的跨平臺(tái)特性,較少原生開發(fā)的巨大成本。

當(dāng)采用第二種方式時(shí)就需要在原生應(yīng)用中嵌入RN頁面。現(xiàn)在就手把手的教大家如何操作。為方便大家理解,我們從一個(gè)全新創(chuàng)建的Objective C項(xiàng)目出發(fā)。

第一步,創(chuàng)建一個(gè)OC原生項(xiàng)目。

在XCode中快速地創(chuàng)建一個(gè)OC single view 項(xiàng)目。

第二步,添加RN需要的npm依賴項(xiàng)目。

和其他js項(xiàng)目一樣,添加RN的npm 依賴首先需要在項(xiàng)目的根目錄下創(chuàng)建一個(gè)package.json文件。二話不說,直接在項(xiàng)目根目錄下新建package.json,然后拷入以下代碼:

{
    "name": "EmbedRN",
    "version": "0.0.1",
    "private": true,
    "scripts": {
      "start": "node node_modules/react-native/local-cli/cli.js start",
      "test": "jest"
    },
    "dependencies": {
      "react": "~15.4.0-rc.4",
      "react-native": "0.38.0"
    },
    "devDependencies": {
      "babel-jest": "21.0.0",
      "babel-preset-react-native": "3.0.2",
      "jest": "21.0.1",
      "jest-react-native": "18.0.0",
      "prop-types": "^15.5.10",
      "react-test-renderer": "~15.4.0-rc.4"
    },
    "jest": {
      "preset": "react-native"
    }
  }

React和RN的版本根據(jù)自己的需要進(jìn)行設(shè)定,但要注意二者版本匹配。如果不確定可以自己先react-native init一個(gè)項(xiàng)目看一下版本號(hào)。

接下來,熟悉得不能再熟悉的動(dòng)作了: npm install。

安裝完成后我們在項(xiàng)目的根目錄下就多了一個(gè)子目錄node_modules/。親切吧。

第三步,安裝cocopod依賴項(xiàng)。

使用cocodpod可以快速幫助我們添加React Native依賴項(xiàng)到原生項(xiàng)目里去。首先在項(xiàng)目根目錄下新建Podfile(通過執(zhí)行pod init),這是cocopod的依賴項(xiàng)目錄。
拷入以下內(nèi)容:

target "EmbedRN" do
  # "node_modules"目錄一般位于根目錄中
  # 但是如果你的結(jié)構(gòu)不同,那你就要根據(jù)實(shí)際路徑修改下面的`:path`
  pod "React", :path => "./node_modules/react-native", :subspecs => [
    "Core",
    "RCTText",
    "RCTNetwork",
    "RCTWebSocket", # 這個(gè)模塊是用于調(diào)試功能的
    # 在這里繼續(xù)添加你所需要的模塊
  ]
end

依賴的庫名是React, 根據(jù)項(xiàng)目的需要添加不同的subspecs進(jìn)來。如要使用Text那么加進(jìn)來RCTText, Image就加RCTImage等等??捎玫膕ubspecs列表可以查閱node_modules/react-native/React.podspec文件。

好了,有了node_modules和Podfile,接下來運(yùn)行命令:

pod install

Pod項(xiàng)目依賴安裝成功。關(guān)閉當(dāng)前xcode session,從此以后我們就使用.xcworkspace來打開我們的項(xiàng)目了。

第四步,編寫RN頁面

新建RN入口頁面:index.ios.js。至于這里的文件名是否一定必須是index.ios.js,回答是否定的。你可以使用任意的文件名,只要后面在oc代碼中指定同樣的文件名就可以了。
比如你想使用business2.js做文件名,沒問題,在后面的oc代碼中指定好jsCodeLocation地址就可以了。這樣就可以保證原生應(yīng)用按照不同的業(yè)務(wù)場景嵌入不同的RN頁面。

import React, { Component } from "react";
import {
  AppRegistry,
  Text,
  View,
} from "react-native";


export default class Page1 extends Component {
  render() {
    return (
      
        
          Welcome to React Native!
        
        
          To get started, edit index.ios.js
        
        
          Press Cmd+R to reload,{"
"}
          Cmd+D or shake for dev menu
        
      
    );
  }
}


AppRegistry.registerComponent("Page1", () => Page1);
第五步,原生頁面調(diào)用RN頁面

在ViewController.m中添加如圖代碼。 RCTRootView就是終極大法了。

第六步,運(yùn)行

首先打開RN的package server:

npm start -- --reset-cache

然后xcode中運(yùn)行項(xiàng)目。
大功告成。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89108.html

相關(guān)文章

  • 跨平臺(tái)App開發(fā)的新趨勢

    摘要:一直以來,程序員對移動(dòng)跨平臺(tái)的追求就沒有停止努力,跨平臺(tái)是為了提高開發(fā)效率,隨著帶來的必然是性能的降低。特別是隨著微信的崛起,這種方式已經(jīng)應(yīng)用很廣了,微信承載了一個(gè)統(tǒng)一跨平臺(tái)的瀏覽器功能,而且能調(diào)用不少原生功能。 移動(dòng)開發(fā)這些年,移動(dòng)開發(fā)者人數(shù)越來越多,類似的培訓(xùn)公司發(fā)展也很快,不過伴隨著的是移動(dòng)應(yīng)用的需求這幾年發(fā)展更為旺盛。要開發(fā)好的App,純原生開發(fā)肯定是最佳選擇。但是這么多年發(fā)展...

    zhkai 評(píng)論0 收藏0
  • 跨平臺(tái)App開發(fā)的新趨勢

    摘要:一直以來,程序員對移動(dòng)跨平臺(tái)的追求就沒有停止努力,跨平臺(tái)是為了提高開發(fā)效率,隨著帶來的必然是性能的降低。特別是隨著微信的崛起,這種方式已經(jīng)應(yīng)用很廣了,微信承載了一個(gè)統(tǒng)一跨平臺(tái)的瀏覽器功能,而且能調(diào)用不少原生功能。 移動(dòng)開發(fā)這些年,移動(dòng)開發(fā)者人數(shù)越來越多,類似的培訓(xùn)公司發(fā)展也很快,不過伴隨著的是移動(dòng)應(yīng)用的需求這幾年發(fā)展更為旺盛。要開發(fā)好的App,純原生開發(fā)肯定是最佳選擇。但是這么多年發(fā)展...

    Achilles 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

chanjarster

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<