您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > Android

移动端原生开发整合React Native Elements教程

时间:2023-03-07 13:10:25  来源:微信公众号  作者:Fun肆编程

一、移动开发和web开发的区别

移动前端开发和web开发都属于前端开发的范围。

  • 一般我们在开发pc端web项目时,需要考虑这么几点:
    • 语言和UI库选型
    • 浏览器的兼容性
    • 构建速度
    • 打包体积
    • seo优化

不难发现,PC端web开发工作重点主要都在代码工程化上。

  • 移动开发时,就目前来说,需要关注的内容有所增加:
    • 浏览器兼容性上我们只需要考虑webkit内核的浏览器和chrome,uc,qq,小米手机浏览器就好了
    • 打包发布需要有规范化的流程(特别是IOS的发布,我们并不会像传统web一样可以频繁发版)
    • 前期投入上需要更慎重些,比如说技术选型,在Flutter被炒的如火如荼的今天,我们是更想要uni-App的一套代码跨平台快速开发的特性来外包项目或者小程序,还是更想要React Native的这种原生应用做属于自己的产品?

总之,移动端的开发不仅需要投入更多的学习成本在代码工程化上,还需要重视跨平台版本管理等。

二、什么是React Native?

React Native (RN)是一个用于构建跨平台应用程序的 JAVAScript 框架。2015年由facebook开源,社区驱动。RN使用 React 为 Android、iOS 等创建原生应用,现在甚至已经探索出了包括React Native windows、React Native macOS和React Native Web等新的项目,支持更多的平台。

三、如何实现安卓和IOS用一套代码开发

React Native提供了一组与平台无关的核心原生组件,例如ViewTextImage直接映射到平台的原生 UI 构建块。
React Native

简单讲,就是RN在Android端构建时会把View编译为AndroidView,IOS端构建时会把View编译为IOSView,在开发人员视角,我们只需要知道RN包装的View组件即可。

四、React Native开发实战

1. 安装Android studio

下载地址:https://developer.android.google.cn/studio/
Android studio是安卓应用的开发工具,安装它是为了帮助我们自动安装Android SDK和虚拟化套件,不需要一个个手动下载。
在这里插入图片描述

安装studio,一直点击下一步:
在这里插入图片描述

安装完成后打开studio会弹出初次设置:
1

在这里插入图片描述

在这里插入图片描述

之后一直下一步就行了,然后内存大的可以将内存设置调大一点。
配置环境变量:
在这里插入图片描述

新增Path变量:
在这里插入图片描述

2. 使用Expo创建工程

地址:https://docs.expo.dev/tutorial/create-your-first-app/
使用维护TypeScript模板的Expo创建模板工程,执行:

PowerShell
yarn create expo-app --template

选择模板工程
在这里插入图片描述

命名项目名称
在这里插入图片描述

安装成功
在这里插入图片描述

3. 启动

将package.json中启动命令加入--clear(启动时清上次缓存,防止一些情况的报错)
在这里插入图片描述

数据线连接手机,并打开手机的开发者模式,将开发者选项中的USB安装和USB调试打开,下图为小米手机,其他手机请百度:
在这里插入图片描述

启动项目
在这里插入图片描述

输入"a"就会在android手机上自动安装Expo Go应用,并打开你的项目

首次连接完成后,在同一局域网下,可拔掉数据线,通过Expo中的扫码形式预览项目

如果需要不使用手机,只在PC浏览器端查看项目,通过键入"w"可在预览web形式的项目,但在此之前运行如下命令安装依赖,否则启动失败:
(本机使用了node16,测试在node18下会报错)

PowerShell
yarn add react-dom react-native-web --save

yarn add @expo/webpack-config --save-dev

npx expo install react-dom react-native-web @expo/webpack-config

4. 使用UI框架React Active Elements

地址:https://reactnativeelements.com/
安装依赖:

PowerShell
yarn add @rneui/themed @rneui/base
# elements的api
# https://reactnativeelements.com/docs/components/button

在这里插入图片描述

5. 扩展:使用UI框架antd Design Mobile RN

地址:https://rn.mobile.ant.design/docs/react/introduce-cn
安装:

PowerShell
yarn add @ant-design/react-native --save

引入组件:
方式一:

PowerShell
import Button from '@ant-design/react-native/lib/button';

方式二(推荐):
1)安装babel相关依赖:

PowerShell
yarn install babel-plugin-import --save-dev

2)添加babel.config.js的配置

JavaScript
{
  "plugins": [
    ["import", { libraryName: "@ant-design/react-native" }] 
  ]
}

3)按需引入组件即可

JavaScript
import { Button } from '@ant-design/react-native';

说明:有人反映通过 react-native init 创建的项目在使用时可能会报 Unable to resolve module react-dom 的错误 ,此时不妨安装 babel-plugin-module-resolver 试试~

五、项目结构

1. 小项目

当我们的应用程序很小时,我们通常将所有组件放在一个目录中:

MyApp
├── components
│   ├── Avatar.js
│   ├── Button.js
│   └── List.js
└── App.js

2. 中型项目

随着我们的应用程序的增长,我们通常会将“screens”组件分离到一个screens目录中,并开始进一步对components目录中的文件进行分类。“screens”组件应该占据整个屏幕,例如个人资料屏幕或设置屏幕。

如果使用着导航的库,例如:react-navigation,我们可以将导航器/路由器组织到一个单独的navigation目录中(也可以叫navigatorsrouting)。

其他一些常见的文件类别:
api:网络 API 调用,通常由提供商或路由组织
assets:要与应用捆绑的图像和其他文件
hooks: 自定义挂钩
reducers: reducer 函数,用于使用useReducer钩子(或其他库)管理应用程序数据
theme:共享颜色和文本样式(有时称为styles)
utils: 字符串格式化等杂项工具

MyApp
├── api
│   ├── Twitter.js
│   ├── facebook.js
│   └── instagram.js
├── assets
│   ├── app-icon.png
│   └── splash-screen.png
├── components
│   ├── buttons
│   │   ├── RoundButton.js
│   │   └── SquareButton.js
│   ├── cards
│   │   ├── ArticleCard.js
│   │   ├── ImageCard.js
│   │   └── VideoCard.js
│   ├── Avatar.js
│   └── List.js
├── hooks
│   ├── useInterval.js
│   └── useLogin.js
├── screens
│   ├── Feed.js
│   ├── Search.js
│   ├── Post.js
│   ├── Reply.js
│   ├── Profile.js
│   └── Settings.js
├── navigation
│   ├── RootStackNavigator.js
│   └── ProfileTabNavigator.js
├── theme
│   ├── colors.js
│   ├── textStyles.js
│   └── spacing.js
├── utils
│   ├── generateUuid.js
│   └── formatCurrency.js
└── App.js
└── ...

3. 大型项目

当项目增长到包含许多不同的功能或 UI 流程时,通常会在顶层按功能对文件进行分类。如果多个团队在开发该应用程序,功能名称将经常与团队名称对齐:例如帐户、演化、隐私。

功能目录通常分组在modulespackagesapps目录下。在多个功能/团队之间共享的组件或实用程序通常位于其中的特殊目录sharedcore目录中,并被视为公共 API。一个功能应该只引用它自己的目录或共享目录中的文件,而不是另一个功能目录中的文件——这表明该文件是移动到共享目录的候选者,并将其视为公共 API。

这个项目结构旨在为每个文件清楚地描述:它应该存在的地方,谁维护它,以及它是否被允许导入到其他功能中。

MyApp
├── modules
│   ├── accounts
│   │   ├── components
│   │   │   ├── UserProfile.js
│   │   │   └── LoginInput.js
│   │   ├── screens
│   │   │   ├── Profile.js
│   │   │   ├── Login.js
│   │   │   └── Deactivate.js
│   │   ├── utils
│   │   │   └── formatAccountName.js
│   │   └── App.js
│   ├── growth
│   │   ├── components
│   │   ├── screens
│   │   ├── utils
│   │   └── App.js
│   ├── privacy
│   │   ├── components
│   │   ├── screens
│   │   ├── utils
│   │   └── App.js
│   └── shared
│       ├── components
│       │   ├── Avatar.js
│       │   ├── Button.js
│       │   └── List.js
│       └── utils
│           └── format.js
└── App.js

六、进阶

React Native中除了基本的页面开发,还应该掌握导航、数据管理、本地存储、网络交互、动画、手势、原生调用等操作方式。仔细阅读React Native官方文档基本可以掌握。

七、相关资料

expo:https://docs.expo.dev/tutorial/create-your-first-app/
react navigation导航框架:https://reactnavigation.org/docs/getting-started/
安卓开发工具:https://developer.android.google.cn/studio/
UI框架 React Native Elements:https://reactnativeelements.com/
UI框架 Ant Design Mobile RN:https://rn.mobile.ant.design/index-cn/

文章已收录至https://lichong.work,转载请注明原文链接。
ps:欢迎关注公众号“Fun肆编程”或添加我的私人微信交流经验



Tags:移动端   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
移动端网站seo优化具体实施方案
在这个快节奏的时代,移动端网站的SEO优化已经成为了各大企业争夺市场份额的关键因素。为了帮助您更好地把握这一领域,我们特别为您准备了一套温馨感人的移动端网站SEO优化具体...【详细内容】
2024-01-05  Search: 移动端  点击:(120)  评论:(0)  加入收藏
移动端Python爬虫实战
移动端Python爬虫实战Python爬虫是指利用Python编程语言编写的程序,用于自动从互联网上获取信息。通过模拟人的行为,Python爬虫可以访问网页、抓取数据,并将数据保存到本地或...【详细内容】
2023-11-25  Search: 移动端  点击:(215)  评论:(0)  加入收藏
高颜值移动端UI组件库
本文来分享一些热门的、经过验证的高颜值移动端UI组件库,帮助你选择适合自己项目的组件库!VantVant 是有赞团队开源的一个轻量、可定制的移动端组件库,于 2017 年开源。目前 Va...【详细内容】
2023-09-11  Search: 移动端  点击:(286)  评论:(0)  加入收藏
前端面试:谈谈你对移动端适配的认识
回答移动端适配是指在不同的移动设备上展示相同的页面效果,以适应不同的屏幕分辨率和设备像素密度的要求。常见的移动端适配方案有:1.媒体查询:使用CSS3的媒体查询,根据不同屏幕...【详细内容】
2023-05-26  Search: 移动端  点击:(179)  评论:(0)  加入收藏
OpenAI扣响移动端“发令枪” 行业应用加速落地
证券时报记者 阮润生人工智能领域应用生态日趋丰富。近日通用型人工智能巨头OpenAI连放大招,在美国地区推出了聊天机器人ChatGPT的iPhone应用,迅速问鼎免费APP排行榜,正式扣响...【详细内容】
2023-05-22  Search: 移动端  点击:(99)  评论:(0)  加入收藏
移动端原生开发整合React Native Elements教程
一、移动开发和web开发的区别移动前端开发和web开发都属于前端开发的范围。 一般我们在开发pc端web项目时,需要考虑这么几点: 语言和UI库选型 浏览器的兼容性 构建速度 ...【详细内容】
2023-03-07  Search: 移动端  点击:(226)  评论:(0)  加入收藏
一套移动端高性能高可用的动态化跨端开发框架
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个跨端开发框架,支持 Android 和 iOS 应用—&m...【详细内容】
2023-02-06  Search: 移动端  点击:(286)  评论:(0)  加入收藏
元宇宙笔记|Web3.0的移动端困局,将从手机底层进行变革
从目前技术来看,Web3移动端大概会出现三种发展类型,并且这三种类型的核心都是围绕解决钱包问题。·移动端将会面对数十亿终端用户,如果用更低的使用门槛来转化这些用户,将...【详细内容】
2022-09-07  Search: 移动端  点击:(293)  评论:(0)  加入收藏
Vue.NetCore快速开发框架:全自动生成PC与移动端代码
项目介绍一套基于.NetCore+Vue2/Vue3+Element plus+uniapp,采用前后端分离方式,全自动生成PC与移动端代码的快速开发脚手架;支持移动端(uniapp)ios/android/h5/微信小程序。 Vu...【详细内容】
2022-06-13  Search: 移动端  点击:(2828)  评论:(0)  加入收藏
移动端开发框架选择及实践
一、移动端框架选型1、原生or 混合 or web选型问题其实我并没有考虑,因为根据我们实际情况,最适合的还是混合开发。这里大概阐述一下原生、混合、web的区别。原生开发没什么...【详细内容】
2022-06-07  Search: 移动端  点击:(425)  评论:(0)  加入收藏
▌简易百科推荐
Android Emulator黑屏怎么办 Android模拟器黑屏解决方法
Android Emulator黑屏问题困扰了非常多的玩家,Android Emulator作为一款安卓模拟器,可以让你在电脑上运行和浏览安卓应用程序,但是程序本身不是很稳定,很容易会出现黑屏,启动不了...【详细内容】
2024-03-04  18183游戏网    Tags:Android Emulator   点击:(37)  评论:(0)  加入收藏
Android开发中常见的Hook技术有哪些?
Hook技术介绍Hook技术是一种在软件开发中常见的技术,它允许开发者在特定的事件发生时插入自定义的代码逻辑。常见的应用场景包括在函数调用前后执行特定的操作,或者在特定的事...【详细内容】
2023-12-25  沐雨花飞蝶  微信公众号  Tags:Android   点击:(85)  评论:(0)  加入收藏
在Android应用开发中使用NFC功能
NFC介绍NFC是指“近场通讯”(Near Field Communication),它是一种短距离无线通信技术,允许设备在非接触或极短距离内进行通信。NFC通常用于移动支付、门禁系统、智能标签和其他...【详细内容】
2023-12-22  沐雨花飞蝶  微信公众号  Tags:Android   点击:(102)  评论:(0)  加入收藏
关于Android图像Bitmap类,你要知道的一切
Bitmap介绍Bitmap是一种图像文件格式,它由像素阵列组成,每个像素都有自己的颜色信息。在计算机图形学中,Bitmap图像可以被描述为一个二维的矩阵,其中每个元素代表一个像素的颜色...【详细内容】
2023-12-19  沐雨花飞蝶  微信公众号  Tags:Android   点击:(99)  评论:(0)  加入收藏
Android开发中如何进行单元测试?
单元测试介绍单元测试是软件开发中的一种测试方法,用于验证代码中的最小可测试单元(通常是函数或方法)是否按预期工作。单元测试通常由开发人员编写,旨在隔离和测试代码的特定部...【详细内容】
2023-12-11  沐雨花飞蝶  微信公众号  Tags:Android   点击:(167)  评论:(0)  加入收藏
一篇聊聊Jetpack Room实现数据存储持久性
Room介绍Room 是 Android Jetpack 组件库中的一部分,它是用于在 Android 应用中进行本地数据库访问和管理的库。Room 提供了一个抽象层,使开发者能够更轻松地访问 SQLite 数据...【详细内容】
2023-12-08  沐雨花飞蝶  微信公众号  Tags:Jetpack   点击:(143)  评论:(0)  加入收藏
了解Android系统架构中的HAL硬件抽象层
在Android系统中,HAL的存在使得不同厂商的硬件可以统一被上层的应用程序调用,从而提高了系统的兼容性和可移植性。HAL还可以帮助开发者更方便地开发应用程序,因为他们不需要为...【详细内容】
2023-12-06  沐雨花飞蝶  微信公众号  Tags:Android   点击:(203)  评论:(0)  加入收藏
我们一起聊聊 IntentService 与 Service 的区别?
Service介绍Service组件是Android应用开发中的四大组件之一,用于在后台执行长时间运行的操作或处理远程请求。它可以在没有用户界面的情况下执行任务,并且可以与其他应用组件...【详细内容】
2023-12-06  沐雨花飞蝶  微信公众号  Tags:IntentService   点击:(170)  评论:(0)  加入收藏
Android数据对象序列化原理与应用
序列化与反序列化「序列化」是将对象转换为可以存储或传输的格式的过程。在计算机科学中,对象通常是指内存中的数据结构,如数组、列表、字典等。通过序列化,可以将这些对象转换...【详细内容】
2023-11-14  沐雨花飞蝶  微信公众号  Tags:Android   点击:(273)  评论:(0)  加入收藏
你了解Android中的SELinux吗?
SELinux介绍SELinux(Security-Enhanced Linux)是一种安全增强的Linux操作系统,它通过强制访问控制(MAC)机制来提供更高级别的系统安全保护。相比于传统的Linux访问控制机制(DAC),SEL...【详细内容】
2023-11-09  沐雨花飞蝶  微信公众号  Tags:Android   点击:(264)  评论:(0)  加入收藏
站内最新
站内热门
站内头条