美文网首页
React-Native 笔记-嵌入到现有原生应用

React-Native 笔记-嵌入到现有原生应用

作者: 太逸 | 来源:发表于2017-03-08 17:46 被阅读0次

    IDE

    • Atom + Nuclide + atom-react-native-automcomplete
    • 自定义几个 snippets,比如创建相应类型的 class 等

    集成到现有项目

    基础环境需求
    依赖包

    React Native的植入过程同时需要ReactReact Native两个node依赖包。

    具体的依赖包记录在package.json文件中。如果项目根目录中没有这个文件,那就自己创建一个。

    对于一个典型的React Native项目来说,一般package.jsonindex.ios.js等文件会放在项目的根目录下。而iOS相关的原生代码会放在一个名为ios/的子目录中,这里也同时放着你的Xcode项目文件(.xcodeproj)。

    下面是一package.json的示例:

    {
      "name": "NumberTileGame",
      "version": "0.0.1",
      "private": true,
      "scripts": {
        "start": "node node_modules/react-native/local-cli/cli.js start"
      },
      "dependencies": {
        "react": "15.4.1",
        "react-native": "0.39.2"
      }
    }
    

    示例中的version字段没有太大意义(除非你要把你的项目发布到npm仓库)。scripts中是用于启动packager服务的命令。dependencies中的react和react-native的版本取决于你的具体需求。一般来说我们推荐使用最新版本。你可以使用npm info react和npm info react-native来查看当前的最新版本。另外,react-native对react的版本有严格要求,高于或低于某个范围都不可以。本文无法在这里列出所有react native和对应的react版本要求,只能提醒读者先尝试执行npm install,然后注意观察安装过程中的报错信息,例如require react@某.某.某版本, but none was installed,然后根据这样的提示,执行npm i -S react@某.某.某版本。

    安装依赖包

    在包含有package.json文件的目录(一般也就是项目根目录)中运行下列命令来安装:

    $ npm install
    
    Podfile

    React Native框架:
    React Native框架整体是作为node模块安装到项目中的。下一步我们需要在CocoaPods的Podfile中指定我们所需要使用的组件.

    Subspecs
    在你开始把React Native植入到你的应用中之前,首先要决定具体整合的是React Native框架中的哪些部分。而这就是subspec
    要做的工作。在创建Podfile文件的时候,需要指定具体安装哪些React Native的依赖库。所指定的每一个库就称为一个subspec。可用的subspec都列在node_modules/react-native/React.podspec中,基本都是按其功能命名的。一般来说你首先需要添加Core,这一subspec包含了必须的AppRegistry、StyleSheet、View以及其他的一些React Native核心库。如果你想使用React Native的Text库(即<Text>组件),那就需要添加RCTText的subspec。同理,Image需要加入RCTImage,等等。

    • 创建 Podfile
    ## 在iOS原生代码所在的目录中(也就是`.xcodeproj`文件所在的目录)执行:
    $ pod init
    
    • Podfile 内容
    # target的名字一般与你的项目名字相同
    target 'NumberTileGame' do
    
      # 'node_modules'目录一般位于根目录中
      # 但是如果你的结构不同,那你就要根据实际路径修改下面的`:path`
      pod 'React', :path => '../node_modules/react-native', :subspecs => [
        'Core',
        'RCTText',
        'RCTNetwork',
        'RCTWebSocket', # 这个模块是用于调试功能的
        # 在这里继续添加你所需要的模块
      ]
      # 如果你的RN版本 >= 0.42.0,请加入下面这行
      pod "Yoga", :path => "../node_modules/react-native/ReactCommon/yoga"
    
    end
    

    添加完需要的内容后就可以执行 pod install 了。

    踩到的坑

    项目环境:xcode V8.2.1 + iOS8.0
    react: V15.4.1
    react-native: V0.42.0

    pod install 后 编译失败:

    报类似错误的还有一个文件。

    我的改法, 改成下面这样,类似都这样改,修改后编译通过:

    #import "JavaScriptCore.h"
    

    相关文章

      网友评论

          本文标题:React-Native 笔记-嵌入到现有原生应用

          本文链接:https://www.haomeiwen.com/subject/hbymgttx.html