一、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概述的更多相关文章

  1. 循环语句for基本概述

    循环语句for基本概述 01. for循环基础语法 for 变量名 in [ 取值列表 ]do 循环体done 02. for循环基本使用示例 #取值列表有多种取值方式,可以直接读取in后面的值,默认 ...

  2. 【AR实验室】ARToolKit之概述篇

    0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...

  3. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  4. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  5. .Net 大型分布式基础服务架构横向演变概述

    一. 业务背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 二. 基础 ...

  6. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  7. 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  8. 基于RN开发的一款视频配音APP(开源)

    在如今React.ng.vue三分天下的格局下,不得不让自己加快学习的脚步.虽然经常会陷入各种迷茫,学得越多会发现不会的东西也被无限放大,不过能用新的技术作出一些小项目小Demo还是会给自己些许自信与 ...

  9. Java消息队列--JMS概述

    1.什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送 ...

随机推荐

  1. PHP扩展Swoole的代码重载机制

    大家都知道Swoole的性能在PHP界还算不错,同样都是PHP为什么呢,我专门研究了下. 几个概念:   1) sapi:可以简单的理解为php引擎对外的一个统一接口,使得php可以和外部程序进行交互 ...

  2. 我们常听到的WAL到底是什么

    什么是 WAL WAL(Write Ahead Log)预写日志,是数据库系统中常见的一种手段,用于保证数据操作的原子性和持久性. 在计算机科学中,预写式日志(Write-ahead logging, ...

  3. 透彻理解C++11新特性:右值引用、std::move、std::forward

    目录 浅拷贝.深拷贝 左值.右值 右值引用类型 强转右值 std::move 重新审视右值引用 右值引用类型和右值的关系 函数参数传递 函数返还值传递 万能引用 引用折叠 完美转发 std::forw ...

  4. ElementUI表单验证攻略:解决表单项启用和禁用验证的切换,以及动态表单验证的综合性问题

    试想一种比较复杂的业务场景: 表格(el-table)的每一行数据的第一列是勾选框,最后一列是输入框.当某一行的勾选框勾上时,启用该行的输入框,并开启该行输入框的表单验证:取消该行的勾选框,则禁用该行 ...

  5. ubuntu 使用 vsftpd 基于系统用户配置相互隔离的 ftp (ftps) 服务

    我们在日常使用 UbuntuServer 服务器时,经常会直接使用基于 ssh 的  sftp 连接服务器直接进行文件上传和下载,不过这个方式其实有一定的安全隐患,当一个团队有多个人员,需要连接服务器 ...

  6. Spring Boot 整合 Dubbo和Zookeeper

    Spring Boot 整合 Dubbo和Zookeeper Spring Boot 整合 Dubbo和Zookeeper 环境介绍 Zookeeper 安装 启动 Dubbo admin 搭建 创建 ...

  7. 程序猿使用Python的tkinter库进行GUI编程肯定要会的事件处理

    事件类型用户通过鼠标.键盘.游戏控制设备在与图形界面交互时,就会触发事件.tkinter事件通常采用了将事件名称放置于尖括号内的字符串表示,尖括号中的内容我们称之为事件类型.事件类型有其通用的定义方式 ...

  8. WCF(一)

    在学习WCF之前要知道几个术语: 一:终结点 终结点由3个要素组成:契约,绑定,地址. 1.契约:契约属于一个服务公开接口的一部分.一个服务的契约,定义了服务端公开的服务方法,使用的传输协议,可访问的 ...

  9. spring boot项目中无法访问resources文件夹问题

    如图,浏览器默认访问static文件下的内容,无法访问templates文件下的html文件. 解决方法: 在application.properties文件中添加静态资源目录的配置即可.

  10. 【Hadoop离线基础总结】MapReduce增强(上)

    MapReduce增强 MapReduce的分区与reduceTask的数量 概述 MapReduce当中的分区:物以类聚,人以群分.相同key的数据,去往同一个reduce. ReduceTask的 ...