RN概述
一、RN概述
中文网:http://reactnative.cn/
ReactNative:使用JS语法编写移动APP应用,RN会把JS转换为底层Java或OC,
最终运行于手机-------完全不依赖于浏览器或者WebView组件!
搭建RN应用开发环境:
①下载并安装全局脚手架工具
npm i -g react-native-cli
②运行脚手架工具,创建出空白项目
react-native init 项目名
③在PC上下载并安装原生Android或IOS开发环境,
编译当前项目得到APP安装程序包---详情参见手册
创建客户端安装程序
安卓开发需要: Windows + Android Atudio + Aandroid SDK
IOS开发需要:Mac OS + XCode
具体过程参考:https://reactnative.cn/docs/getting-started.html
最后在项目根目录下得到:android\app\build\outputs\apk\debug\app-
debug.apk文件-------AndroidApp的安装程序,需要把此APK文件安装到真实手机或者
模拟手机中
④进入空白项目,运行其中的开发服务器-----------PC机目前是服务器
cd 项目目录
npm start
⑤使用真实手机/模拟器访问测试-----------Android系统是客户端
Windows服务器的IP地址:端口号(8081)
查看Windows服务器的IP地址:
cmd >ipconfig
复习:
WebView方案:Vue.js + MintUI
混编方案:Angular + lonic
JSBridge方案:React + ReactNative
1.ReactNative概述
RN本质是一种JSBridge方案,代码使用JS/React来编写,RN会将这些代码转换为Android/Java
或者iOS/OC,最后运行在手机端.
优势:一套代码到处运行;运行效率高;功能丰富;
不足:原生Android和IOS默认组件效果不一致,非要相同只能深度定制.
提示:语法是React语法,采用组件化编程;可以使用的组件要么是用户自定义的组件,要么是RN预定义
的组件,如<View/>、<Text/>、<Image/>等,不能使用任何HTML标签组件-----底层没有浏览器!
官网:www.reactnative.com
中文网:reactnative.cn
搭建RN开发运行环境:
前提:
Windows系统(服务器) + Android手机或模拟器
MacOS系统(服务器) + IOS手机或模拟器(客户端)
①下载并安装全局脚手架工具
②运行脚手架工具创建空白项目
③在PC上下载并安装Android或IOS开发环境,编译当前项目得到APP安
装程序包.------详情参见手册
此目录会生成:项目目录\android\app\build\outputs\apk\debug\app-debug.apk
④进入空白项目并运行其中的开发服务器
cd 项目名
npm start
⑤在手机上安装APP安装包,远程访问PC服务器
注意:开发服务器命令行界面千万不要用鼠标选中任何内容!如果选中了
客户端手机APP无法得到更新后的内容!!
⑤在手机上安装APP安装包,远程访问PC服务器.
二、RN开发常见错误
①点击APP图标,立即"此应用程序关闭"
APP安装失败,只能卸载并重新安装;
不行就重启一下模拟器再试试;
再不行换一个其他版本的模拟器
②点击APP图标,一片空白
APP启动失败了,或者无法从服务器获取更新后内容;
关闭APP程序,重新启动;
同时必须保证服务器端控制台没有用鼠标选中任何内容
③点APP图标,显示黑色底红色错误信息
APP设置有问题,或者服务器端代码有问题;
仔细查看红色错误信息,从中找到解决方案
常见APP红色错误:
Unable to load Script....
原因:APP无法从服务器加载更新后的内容
解决办法:给APP重新设置服务器的主机名和端口号
摇一摇 > Dev Settings > Debug Server host & port for device >输入完成后记得
重启APP即可
Could not cnnect to development server:
原因:APP不能连接到开发服务器;可能原因:①开发服务器没有启动
②没有正确查找到服务器的IP地址(正确的地址应该形如 172.x.x.x或者192.168.x.x)
③APP没有正确的设置服务器IP和端口
三、ReactNative中的组件样式编写
提示:RN应用中没有浏览器,没有CSS解释器!RN样式有些名称类似CSS样式名称,
但是本质完全不一样!!而且细节也不一样,例如borderColor、但是不存在border.
①RN中的尺寸都是数字类型,不能赋值为字符串!也没有单位!如 fontSize:14
②RN中父元素的样式,不会继承给子元素--------每个元素的样式都由自己的style
完全控制,不需要叠加计算父元素的样式.
方法一:行内样式
<Any style={{ color:'red',padding:20 }}>
方法二:外部样式
let ss = StyleSheet.create({
success:{ color: ' red ' }
})
<Any style={ ss.success }>
也可以给一个组件指定多个样式对象------多个对象组成的数组:
<Any style={ [ss.success,ss.textRight,{ fontSize:30 }] }>
CSS:Cascading StyleSheet,层叠/级联样式表,子元素可以继承父元素的样式
RN SS: StyleSheet,样式表,子元素不会继承父元素的样式
四、ReactNative中的组件布局
提示:RN中的组件没有"块级"和 "行内元素"之分;
所有元素的尺寸由width和height两个属性控制;
若没有指定宽和高,默认有布局系统来控制尺寸-----一套很类似于CSS重点
FlexBox布局系统.常用属性:
①flex:指定当前元素在主轴上的尺寸占比
number
②flexDirection:子元素排列方向
column:默认值,纵向排列
column-reverse:纵向排列(反向)
row:横向排列
row-reverse:横向排列(反向)
③alignItems:子元素在交叉轴方向上的对齐方式
flex-start:子元素对齐到容器的开始位置
flex-end:子元素对齐到容器的结束位置
center:子元素对齐到容器的中部
stretch:默认值,子元素在交叉轴方向上拉伸撑满容器
④justifyContent:调整所有的子元素(即内容)在主轴上的分布方式
flex-start:子元素码放在容器的主轴开始位置
flex-end:子元素码放在容器的主轴结束位置
center:子元素码放在容器的主轴中央
space-between:第一个孩子在开始,最后一个孩子在结尾,其他孩子之间平均分配空白空间
space-around:每个孩子上下都包裹着相同的空白空间-----相邻的两个子元素间的空白是开头和结尾空白的2倍
space-evenly:所有的空白在孩子之间以及上下顶部平均分配
五、ReactNative提供的常用组件
①View:最简单的容器,默认没有高度,要靠内容撑起来,内容溢出后将不显示
<View style={ }>子组件</View>
注意:View中不能直接放置文本,文本只能放置在Text中
②ScrollView:可以滚动的容器,默认没有高度,要靠内容撑起来,内容溢出后将出现滚动条
<ScrollView style={ }>子组件</ScrollView>
③Text:显示单行或多行文本
<Text style={} onPress={} onLongPress={} numberOfLines={显示出来的行数} ellipsizeMode='省略号显示的位置'>文本{'\n'}内容</Text>
注意:RN允许Text中嵌套Text,而且子Text可以继承父Text的样式!
④Button:按钮
<Button title="按钮上的文字" color="按钮背景色" onPress={ } disabled={true/false}/>
⑤TextInput:文本输入框(单行/多行)
<TextInput placeholder="提示文字" secureTextEntry={ true } multiline={ true } numberOfLines={3 }
value={ this.state.uname } onChangeText={ this.doChange}/>
⑥Image:图片
RN概述的更多相关文章
- 循环语句for基本概述
循环语句for基本概述 01. for循环基础语法 for 变量名 in [ 取值列表 ]do 循环体done 02. for循环基本使用示例 #取值列表有多种取值方式,可以直接读取in后面的值,默认 ...
- 【AR实验室】ARToolKit之概述篇
0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- .Net 大型分布式基础服务架构横向演变概述
一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...
- [C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- 基于RN开发的一款视频配音APP(开源)
在如今React.ng.vue三分天下的格局下,不得不让自己加快学习的脚步.虽然经常会陷入各种迷茫,学得越多会发现不会的东西也被无限放大,不过能用新的技术作出一些小项目小Demo还是会给自己些许自信与 ...
- Java消息队列--JMS概述
1.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...
随机推荐
- js html生成图片
我自己分装好的方法,外链自己去下: /** * !!!使用前请导入jq文件!!! 海报生成, 二维码链接生成 */ document.write('<script src="/Publ ...
- Apk优化极致
1. webp WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式.图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器宽带资源和数据空间.Facebook Ebay等知 ...
- C++操作Kafka使用Protobuf进行跨语言数据交互
C++操作Kafka使用Protobuf进行跨语言数据交互 Kafka 是一种分布式的,基于发布 / 订阅的消息系统.主要设计目标如下: 以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对 T ...
- 两种方法直接删除数组中特定值的项(JavaScript)
一.问题详情: 直接删除意为原数组需要被改变,而不是得到另一个数组. 二.JavaScript实现 (一)巧用数组的push( ).shift( )方法 function del(arr,num) { ...
- 网速慢?不!可能是DNS出了问题! 公共DNS优选之 BAT 百度、腾讯、阿里、谷歌DNS哪个更快?
如果一下还是解决不了你的问题请这边走 首先是Google的DNS: 8.8.8.8 丢包严重 PASS但是扶墙的时候是必备的,如果有扶墙的需求的话可以备用. 二.百度DNS 180.76.76.76 ...
- 图论--拓扑排序--HDU-1285确定比赛名次
Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委 ...
- python selenium(定位方法)
一.定位方法 注意:元素属性必须唯一存在 #id定位 find_element_by_id() #name定位 find_element_by_name() #class_name定位 find_el ...
- linux上github的简单使用
Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前,包括Rubinius ...
- commons-logging slf4j log4j 区别
日志门面 1.Apache通用日志接口(commons-logging.jar) Apache Commons包中的一个,包含了日志功能,必须使用的jar包.这个包本身包含了一个Simple Logg ...
- LeetCode 98. 验证二叉搜索树 | Python
98. 验证二叉搜索树 题目来源:https://leetcode-cn.com/problems/validate-binary-search-tree 题目 给定一个二叉树,判断其是否是一个有效的 ...