Android开发学习之路--React-Native之初体验
近段时间业余在学node.js,租了个阿里云准备搭建后端,想用node.js,偶尔得知react-native可以在不同平台跑,js在iOS和android上都可以运行ok,今天就简单学习下react-native。(这里的开发环境是mac,windows和linux可能会有所不同,而且跑ios也需要mac的)。
安装react-native
首先是安装react-native了,这里首先是已经安装好了node,并且也安装好了npm了,关于node和npm就只能google了,不过之后我也会在web开发中介绍,暂时没有这么多时间总结了。好了,言归正传执行如下命令:
sudo npm install -g react-native-cli
等待一段时间安装好了之后,会有react-native的命令,可能PATH没有设置,会出现不了这个命令。首先查看下/usr/local/bin下会有react-native的命令如下:
ll /usr/local/bin
total 47064
-rwxr-xr-x 1 jared admin 656B 3 28 17:38 brew
-rwxr-xr-x 1 root wheel 290K 3 6 2015 ctags
-rwxrwxr-x 1 root wheel 23M 3 9 10:52 node
lrwxr-xr-x 1 502 staff 38B 3 14 14:21 npm -> ../lib/node_modules/npm/bin/npm-cli.js
lrwxr-xr-x 1 root admin 45B 5 8 10:21 react-native -> ../lib/node_modules/react-native-cli/index.js
-rwxr-xr-x 1 root wheel 2.2K 2 27 2015 wstorm
继续查看PATH路径有没有包含这个路径:
echo $PATH
/usr/local/Cellar/git/2.7.4/bin:/usr/local/bin:/usr/local/sbin:/Users/jared/.gradle/bin:/Users/jared/Desktop/jared/software/sdk/platform-tools:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
因为我的配置里面有,所以就可以直接使用了,如果没有就在.bash_profile中添加了。好了,既然命令有了,那么就执行react-native init AwesomeProject,这里的AwesomeProject指的是你的工程名字,也可以定义为HelloWorld。
react-native init AwesomeProject
This will walk you through creating a new React Native project in /Users/jared/Documents/workspace/react-native/AwesomeProject
Installing react-native package from npm...
等待一段时间,等获取React Native的源代码和依赖包之后在相应的目录下会生成如下目录和文件:
->AwesomeProject ls
android index.ios.js node_modules
index.android.js ios package.json
期中andorid目录就是android项目的工程,ios目录就是iOS项目工程,node_modules是react native的源代码和依赖包,index.ios.js是iOS的相关js的代码,index.android.js是android的相关的js代码,package.json是包的管理。
运行react-native
既然都准备了,那么就运行下看下效果了。
首先是iOS,打开xcode,打开上述ios目录的工程,运行后在模拟器中得到如下:
因为iOS用的是模拟器,所以不需要改ip地址了,直接使用localhost了,接着就是andoird了,因为用的真机,所以这里修改下ip地址如下图:
接着运行android,然后reload js如下图:
react-native代码解析
既然两个平台都运行ok了,那么接下去就可以修改js代码来看看效果了,先看下源代码吧,这里就分析下android了,因为ios的也是一样的:
class AwesomeProject extends Component {
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.android.js
</Text>
<Text style={styles.instructions}>
Shake or press menu button for dev menu
</Text>
</View>
);
}
}
主要代码如上所示,这里AwesomeProject继承了Component,然后可以看到主要在屏幕上显示的代码就是View,这里的View由三个Text组成,每个Text都有他对应的style和content,这也就是上述运行后的图中为什么是居中,还有颜色大小了,具体如下的样式:
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
既然我们基本了解了代码,那么就可以试着做一点点修改,添加一行文字,并且把背景色修改如下,
<Text style={styles.instructions}>
I am studying the React Native!
</Text>
backgroundColor: '#00FFFF'
接着我们运行看下效果:
和预期的效果一样,这样的话只要修改一份代码,可以同时在android和iOS中运行。
先简单学到这里了,之后可以学学别的简单的空间。感觉这么一来,web端,android端,ios端,以及服务端,都只要用js就可以完成个七七八八了,很赞,js还是要好好学学了。
Android开发学习之路--React-Native之初体验的更多相关文章
- Android开发学习之路--数据持久化之初体验
上班第一天,虽然工作上处于酱油模式,但是学习上依旧不能拉下,接着学习android开发吧,这里学习数据持久化的 知识. 其实数据持久化就是数据可以保存起来,一般我们保存数据都是以文件,或者数据库的形式 ...
- Android开发学习之路--Broadcast Receiver之初体验
学习了Activity组件后,这里再学习下另一个组件Broadcast Receiver组件.这里学习下自定义的Broadcast Receiver.通过按键自己发送广播,然后自己接收广播.新建MyB ...
- Android开发学习之路--百度地图之初体验
手机都有gps和网络,通过gps或者网络可以定位到自己,然后通过百度,腾讯啊之类的地图可以显示我们的地理位置.这里学习下百度地图的使用.首先就是要申请开发者了,这个详细就不多讲了.http://dev ...
- Android开发学习之路--Content Provider之初体验
天气说变就变,马上又变冷了,还好空气不错,阳光也不错,早起上班的车上的人也不多,公司来的同事和昨天一样一样的,可能明天会多一些吧,那就再来学习android吧.学了两个android的组件,这里学习下 ...
- Android开发学习之路--网络编程之初体验
一般手机都是需要上网的,一般我们的浏览器就是个webview.这里简单实现下下功能,先编写Android的layout布局: <?xml version="1.0" enco ...
- Web开发学习之路--Springmvc+Hibernate之初体验
本来想继续学习android的,可是用到了android和服务器交互,需要实现个login的功能,苦于没有这么个环境,那就只能自己来搭建了.既然已经基本上可以玩web了,那么接下来使用web开源的框架 ...
- Android开发学习之路--网络编程之xml、json
一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载 ...
- Android开发学习之路--Android Studio cmake编译ffmpeg
最新的android studio2.2引入了cmake可以很好地实现ndk的编写.这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路– ...
- Android开发学习之路--Android系统架构初探
环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
随机推荐
- ●POJ 2284 That Nice Euler Circuit
题链: http://poj.org/problem?id=2284 题解: 计算几何,平面图的欧拉定理 欧拉定理:设平面图的定点数为v,边数为e,面数为f,则有 v+f-e=2 即 f=e-v+2 ...
- HDU 4501
超市里有n件他想要的商品.小明顺便对这n件商品打了分,表示商品的实际价值.小明发现身上带了v1的人民币,会员卡里面有v2的积分,而且他能免费拿k件.他想知道他最多能买多大价值的商品. 由于小明想要的商 ...
- Codeforces Round #438 B. Race Against Time
Description Have you ever tried to explain to the coordinator, why it is eight hours to the contest ...
- SAM维护的在线LCS
题目大意: 给定两个字符串,存在三种操作,分别是在a,b串末尾加一个字符串,和询问两串的LCS 题解: Get新套路:把两串建在同一SAM上,将重合的位置合并为同一节点,再加个标记数组,如果两者的LC ...
- 伸展树Splay【非指针版】
·伸展树有以下基本操作(基于一道强大模板题:codevs维护队列): a[]读入的数组;id[]表示当前数组中的元素在树中节点的临时标号;fa[]当前节点的父节点的编号;c[][]类似于Trie,就是 ...
- python设计模式浅析
今天简单聊聊python的设计模式,GOF设计模式(c++)和Head first design pattern(Java)是两本设计模式的经典,基本可以照搬在python上面,但是你会发现pytho ...
- Java 8 的时间日期 API
上一篇文章『Java 的时间日期 API』中,我们学习了由 Date.Calendar,DateFormat 等组成的「传统时间日期 API」,但是传统的处理接口设计并不是很友好,不易使用.终于,Ja ...
- C语言中#define的用法
今天整理了一些#define的用法,与大家共享! 1.简单的define定义 #define MAXTIME 1000 一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写 if(i& ...
- 安装win7提示“我们无法创建新的分区,也找不到现有分区”
用U盘安装操作系统,但是遇到了这种问题. 来来回删掉主分区,重新建立主分区,都不能搞定.最后还是用古老的方法安装了.安装的方法如下: 大家首先要进入到winpe,这里我用的是大白菜winpe. 将C盘 ...
- C语言程序设计第二次作业——
1,编译过程过程中的错误缺引号和分号并且拼写错误. 正确结果: 2,编译过程 改正错误: 正确结果: 3,利用SIZEOF运算符求出的数据类型所占字节大小: 4,在头文件LIMITS.H中相关的编译 ...