React Native 混合ios android开发 及常用框架

news2024/9/24 1:20:13

英文文档:Setting up the development environment · React Native

中文文档:集成到现有原生应用 · React Native 中文网

ios

在集成过程中,需要修改package.json 和 Podfile,按文档中的内容,如果pod install过不了的话,

可以参考https://github.com/facebook/react-native/tree/v0.60.0/template 

先修改package.json,然后执行命名

yarn

npm install

再修改Podfile,执行命令

pod install

如果遇到

warning " > react-native@0.71.7" has unmet peer dependency "react@18.2.0".

则安装

yarn add react@18.2.0

遇到错误

('uint8_t' (aka 'unsigned char') vs 'enum clockid_t')

临时解决办法,注释掉语句

Hermes

React Hermes 是一个用于React Native的JavaScript引擎,它是Facebook团队开发的一个新型的JavaScript引擎,旨在提高React Native应用程序的性能和启动时间。

Hermes引擎的主要优点是其快速的启动时间和低内存消耗,这使它在第一次加载应用程序时比其他的JavaScript引擎更加迅速。它还通过使用更快的JavaScript代码优化算法,提高了React Native应用程序的性能,并降低了CPU的使用率。

React Native开发者可以选择使用Hermes引擎来构建他们的应用程序,以提高其性能和响应速度。Hermes引擎已经在React Native 0.60和更高版本中默认启用,因此开发者在开发新的React Native应用程序时可以直接使用它。

react-native-cli

React Native CLI 是 React Native 的命令行接口工具,用于创建、运行和打包 React Native 应用程序。
React Native 备忘清单 & react-native cheatsheet & Quick Reference

cli/commands.md at main · react-native-community/cli · GitHub

# 安装
yarn global add react-native-cli

# 
react-native -h

Usage: react-native [command] [options]

Options:
  -v                                         Output the current version
  --verbose                                  Increase logging verbosity
  -h, --help                                 display help for command

Commands:
  init [options] <projectName>               Initialize a new React Native project named <projectName> in a directory of the same name.
  doctor [options]                           Diagnose and fix common Node.js, iOS, Android & React Native issues.
  bundle [options]                           builds the javascript bundle for offline use
  ram-bundle [options]                       builds javascript as a "Random Access Module" bundle for offline use
  start [options]                            starts the webserver
  config                                     Print CLI configuration
  clean [options]                            Cleans your project by removing React Native related caches and modules.
  info                                       Get relevant version info about OS, toolchain and libraries
  upgrade [version]                          Upgrade your app's template files to the specified or latest npm version using `rn-diff-purge` project. Only valid semver versions are allowed.
  profile-hermes [options] [destinationDir]  Pull and convert a Hermes tracing profile to Chrome tracing profile, then store it in the directory <destinationDir> of the local machine
  log-ios                                    starts iOS device syslog tail
  run-ios [options]                          builds your app and starts it on iOS simulator
  build-ios [options]                        builds your app on iOS simulator
  log-android                                starts logkitty
  run-android [options]                      builds your app and starts it on a connected Android emulator or device
  build-android [options]                    builds your app
  help [command]                             display help for command

 

#运行到模拟器
npm run ios --simulator=”iPhone 11 Pro Max”

#查看所以可用的模拟器
xcrun simctl list devices
#package.json
"ios:test": "react-native run-ios --mode Test --device --scheme='nectarina'",

 mode

scheme

Redux

Redux是一个流行的JavaScript状态管理库,用于管理应用程序中的状态(state),也就是数据。它与React一起被广泛用于构建单页面应用程序,尤其是在复杂应用程序中。

Redux将应用程序的状态存储在一个单一存储库(store)中,并提供了一组API帮助开发人员管理该状态。Redux的核心概念包括:

- Store:一个单一的JS对象,它保存了应用程序的状态
- Action:一个描述发生了什么的简单对象,它包含一个“type”属性和一些可选数据
- Reducer:一个纯函数,确定应用程序在响应给定操作后如何更改状态

Redux支持中间件(middleware),它们可以截获操作,并在它们被分派给reducer之前,执行额外的逻辑。这使得Redux可以与其他库和框架集成,并以非常灵活的方式进行扩展。

通过使用Redux,开发人员可以更轻松地管理应用程序的状态,使应用程序更容易调试和维护,并且与其他开发人员的合作更容易。

Redux 入门教程(一):基本用法 - 阮一峰的网络日志

redux的原理、工作流程及其应用_redux工作流程_小王日记a的博客-CSDN博客

redux-persist

Redux-Persist是一个用于在Redux应用程序中持久化状态的库。它可以帮助你在浏览器 `localStorage` 或 `sessionStorage` 中存储Redux store中的数据,并且在页面重新载入时可以恢复这些数据,即使用户关闭了浏览器也是如此。

Redux-Persist提供了多种持久化存储引擎,包括`LocalStorage`,`SessionStorage`,甚至可以在服务器端使用`Node.js`。通过使用它,您可以确保用户的设置、个人偏好以及应用程序状态在浏览器关闭后也可以被保留下来。

Redux Persist 还有一些高级功能,如自动重新hydrate,自定义序列化,调试工具等,它旨在使持久化状态的实现变得简单,直观且易于使用。

React redux-persist持久化数据存储_红嘴-蓝鹊的博客-CSDN博客

metro

Metro是一个用于打包和构建React Native应用程序的JavaScript打包器。Metro的目标是提供快速、可靠和易于使用的打包工具,尤其是针对React Native应用程序。

Metro 的一个主要优势就是它在本地进行了优化,特别是在打包大型代码库时。这种本地优化可以确保快速、高效的打包速度,而不会因为JavaScript编译和转换而占用太多的内存和CPU资源。

Metro还具有适应现代JavaScript语法的能力,这意味着您可以使用最新的ECMAScript标准,如ES6、ES7和ES8;因此您可以选择使用async/await等语言特性。

在React Native应用程序中,Metro负责将JavaScript代码打包成一个单一的bundle,将其他静态资源如图片和字体打包在一起,并定位其在app中的位置。这些打包和定位任务不仅限于开发环境,而且还包括生产环境。

总之,Metro是React Native应用程序中的一个重要工具,用于实现高效的JavaScript打包和构建,从而提高应用程序的性能和响应速度。

metro的bundling有三个阶段:

  1. 解析(Resolution): 解析所有模块并且构建成图,有点类似于Gradle在配置阶段会将所有相互依赖的任务构建成图。
  2. 转换(Transformation):转换阶段会将模块转换成目标平台能识别的格式,这一阶段执行了js编译,主流常用的js编译器为babel
  3. 序列化(Serialization):最后一个阶段序列化,会将所有转换之后的模块打包成一个或者多个bundle.

React Native | Metro打包利器 - 知乎

 

参考:

iOS通过Pod快速集成ReactNative环境_普通网友的博客-CSDN博客

React Native混合开发详解 - 掘金

React Native混合开发(iOS)下的数据交互 - 简书

⚡️ React Native 启动速度优化——Native 篇(内含源码分析) - 掘金 

📝 没 2 年 React Native 开发经验,你都遇不到这些坑 - 掘金

React Native项目实战_christian-dong的博客-CSDN博客 

React Native原理系列-老架构 - IT深客 

React Native和Native间的通信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用Kotlin 一步步抄作业写一个Redux

前言 我抄的作业 完全理解 redux&#xff08;从零实现一个 redux&#xff09; Issue #22 brickspert/blog GitHub 一.架构设计模式 1. mvc>mvp>mvvm->mvi 2.Redux实现类Mvi Android Mvi 与Redux对比&#xff0c;思想一致&#xff0c;单向数据流&#xff0c;单…

最优控制 3:最优控制理论中的极小值原理与动态规划

最优控制 3&#xff1a;使用极小值原理求解最优控制问题 引言极小值原理 t f t_f tf​ 固定的情况 t f t_f tf​ 自由的情况 动态规划连续系统 HJB 方程的推导 引言 经典变分法是一种特别强大的工具&#xff0c;但是它要求控制量必须可导且无界&#xff0c;这在很多问题中都是…

pandas读取列数不同的CSV文件

使用pandas读取每行不同列的CSV文件 对于序列模型而言&#xff0c;每条数据的大小都不一定相等&#xff0c;但对于一般的神经网络要求输入大小相等。目前的一种方法是选取当前数据集中最大长度的数据作为基准数据大小&#xff0c;其余的数据末尾补零来规范整个数据集每条数据的…

计算机:理解操作系统:内存篇(下)

内存 1. 指针与引用2. 进程的内存模型3. 幻象大师---操作系统4. 总结 本篇是 关于计算机内存最后一篇文章 什么是内存 C/C内存模型 堆区与栈区的本质 Java、Python等内存模型 Java内存模型 Jave中的堆区与栈区是如何实现的 Python内存模型 指针与引用 进程的内存模型 幻想大师-…

css tooltip (web.dev)

目录 版权介绍tool-tip在上居中动画效果宽度边界 tool-tip::after范围锥形渐变-webkit-mask尖角怎么来的? 附录完整代码 版权 本文为原创, 遵循 CC 4.0 BY-SA 版权协议, 转载需注明出处: https://blog.csdn.net/big_cheng/article/details/130262213. 介绍 https://web.dev…

【周末闲谈】AI作图,你真的了解它吗?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言&#xff0c;模仿还是超越&#xff1f; ✨第二周 畅想AR 文章目录 系列目录前言AI绘画&#x1f916;&#x1f916;&#x1f916;工作…

[C++]:万字超详细讲解多态以及多态的实现原理(面试的必考的c++考点)

文章目录 前言一、多态的定义及实现1.多态的构成条件2.c11的override和final3.重载&#xff0c;重写&#xff0c;重定义的比较4.抽象类5.多态的原理6.多继承中的虚函数表7.动态绑定和静态绑定总结 前言 多态的概念&#xff1a; 多态的概念&#xff1a;通俗来说&#xff0c;就是…

【Linux】使用systemd设置开机自启动命令

目录 1 使用使用systemd实现开机自动运行命令1.1 新建一个.service文件1.2 编写.service文件1.2.1 [Unit]1.2.2 [Service]1.2.3 [Install] 1.3 启动服务并设置自启动 2 编写Systemd服务文件的要点2.1 Systemd服务文件的位置2.2 Systemd服务文件的格式2.3 Systemd服务文件的基本…

【基础】Kafka -- 基础架构及核心概念

Kafka -- 基础架构及核心概念 初识 KafkaKafka 基本架构Kafka 主题与分区主题与分区分区副本机制 Replica高水位 HW 生产者生产者客户端必要的参数配置消息的发送序列化分区器生产者拦截器 原理分析重要的生产者参数 消费者消费者与消费者组消费者客户端必要的参数配置订阅主题…

MySQL 按关键字进行截取

一、问题背景 取MySQL数据表中某个字段中的IP信息。 如&#xff1a;t_log 表中的 user_ip 字段值为 {“username”:“miracle”,“ip”:“110.230.128.186”}&#xff0c;取出IP信息 110.230.128.186。 建表和初始化SQL语句&#xff0c;如下&#xff1a; SET NAMES utf8mb4…

GORM操作mysql数据库

对象就是程序的数据结构&#xff0c;关系是数据库。就是将程序的数据结构与数据库表对应起来。 在GORM是Go语言的ORM框架&#xff0c;将go的数据结构转化为数据库表&#xff0c;例如将结构体转化为数据库表。 引入gorm框架 远程下载gorm框架 go get -u gorm.io/driver/mysq…

HTTP中的Content-type详解

Content-Type Content-Type&#xff08;MediaType&#xff09;&#xff0c;即是Internet Media Type&#xff0c;互联网媒体类型&#xff0c;也叫做MIME类型。在互联网中有成百上千中不同的数据类型&#xff0c;HTTP在传输数据对象时会为他们打上称为MIME的数据格式标签&#x…

关于java.io的学习记录(写入文本)

可以通过字节流&#xff08;FileOutputStream&#xff09;、字符流&#xff08;OutputStreamWriter&#xff09;、字符缓冲流&#xff08;BufferedWriter&#xff09;读取文本中的数据。 FileOutputStream写入文本 public void write(){String path "writeTest.txt"…

【是C++,不是C艹】 什么是C++ | C++从哪来 | 学习建议

&#x1f49e;&#x1f49e;欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e; &#x1f449;专栏&#xff1a;《是C&#xff0c;不是C艹》&#x1f448; 前言&#xff1a; 我知道你急着学C&#xff0c;但你先别急&#xff0c;薛之谦认识认识C还是很有必要的。本期跟大家聊…

文件夹改名,如何在改名之后批量复制文件夹名称

在日常时候中会遇到给文件夹改名的时候&#xff0c;那么我们又如何在改名之后批量复制文件夹名称&#xff1f;今天就由小编来给大家分享一下操作办法。 首先第一步&#xff0c;我们要进入文件批量改名高手&#xff0c;并在板块栏里选择“文件夹批量改名”板块。 第二步&#xf…

SpringBoot 接入chatGPT API

SpringBoot 接入chatGPT API 一、准备工作二、补全接口示例三、申请API-KEY**四、JavaScript调用API**五、SpringBoot整合ChatGPT六、使用curl模拟请求ChatGPT平台已经为技术提供了一个入口了,作为一个Java程序员,我们第一时间想到的就是快速开发一个应用,接入ChatGPT的接口…

第十四天本地锁、Redis分布锁、Redisson锁三者的区别

一、为什么要有redis分布式锁&#xff0c;它解决了什么问题&#xff1f; 在传统单体架构的项目下&#xff0c;使用本地锁synchronized和lock锁就可以锁住当前进程&#xff0c;保证线程的安全性&#xff0c;但是本地锁解决不了分布式环境下多个服务资源共享的问题&#xff0c;而…

产品研发流程管理

先看一张图&#xff0c;该图适应绝大部分的产品的 研发流程 &#xff08;需要的可以去下 产品研发流程| ProcessOn免费在线作图,在线流程图,在线思维导图&#xff09; 该图详细描述了&#xff0c;不同阶段应该做什么&#xff0c;具体的来说&#xff0c;是确定了什么时候 “开会…

高精度人员定位系统源码,采用vue+spring boot框架,支持二次开发

智慧工厂人员定位系统源码&#xff0c;高精度人员定位系统源码&#xff0c;UWB定位技术 文末获取联系&#xff01; 在工厂日常生产活动中&#xff0c;企业很难精准地掌握访客和承包商等各类人员的实际位置&#xff0c;且无法实时监控巡检人员的巡检路线&#xff0c;当厂区发生灾…

【Python】实战:生成无关联单选问卷 csv《精神状态评估表》

目录 一、适用场景 二、业务需求 三、Python 文件 &#xff08;1&#xff09;创建文件 &#xff08;2&#xff09;代码示例 四、csv 文件 一、适用场景 实战场景&#xff1a; 问卷全部为单选题问卷问题全部为必填问题之间无关联关系每个问题的答案分数不同根据问卷全部问…