本篇首发于简书 欢迎关注

上一篇文章是时候了解React Native了介绍了React Native。大家应该对React Native有个初步的认识。

接下来我们就可以初始化一个React Native项目了。

创建项目

打开命令窗口,进入我们希望建立的项目目录所在的父目录后,输入命令

react-native init AwesomeProject

其中AwesomeProject是项目的名称。默认init的版本都是ReactNative最新版本,目前最新版本0.30.0。可以通过项目目录下package.json文件查看.



初始化项目时间可能需要一段时间。

React Native在init时将项目需要用到的依赖包都下载到了当前目录下的node_modules目录中; Android运行程序在android目录下, 这个目录是可以导入Android Studio中进行调试。同样IOS运行程序在ios目录下。

调试程序

以调试Android程序为例,在安装目录下,输入命令:react-native run-android,程序会自动运行到模拟器或真机中(记得打开USB调试,和电脑在一个wifi下),同时也会运行React packager服务窗口(类似Tomcat,程序在调试阶段不要关)。

如果手机已经装过程序, 只需要在命令窗口输入命令react-native start 打开React packager窗口,手机直接打开程序就可以了。

修改JSX代码,获取手机宽高

打开项目目录下的index.android.js(如果使用Android手机调测)或者index.ios.js(如果使用iPhone手机调测) 文件,可以对代码进行修改,比如我们经常需要计算手机的宽,高和屏幕密度.

 * Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
var Dimensions=require('Dimensions');//加载Dimensions模块
let PixelRatio=require('PixelRatio'); // 加载PixelRatio模块
////获取屏幕宽度,单位PT,单位不是实际的物理像素,而是逻辑像素, 类似于Android中dp或者ios中点
let totalWidth=Dimensions.get('window').width;
let totalHeight=Dimensions.get('window').height; //获取屏幕高度
let pixelRatio=PixelRatio.get(); // 获取屏幕密度, 1PT等于多少实际像素
// 这是ES6语法 和java非常相似
class AwesomeProject extends Component {
render() {
let aValue;
// 打印日志, 可以通过chrome装插件进行查看
console.log('aaaa');
console.log('totalHeight is'+totalHeight);
console.log('aValue is:'+aValue);
console.log('the type of aValue is:'+typeof (aValue));
return (
<View style={styles.container}>
<Text style={styles.welcome}>
pixelRatio={pixelRatio}
</Text>
<Text style={styles.instructions}>
totalHeight={totalHeight}
</Text>
<Text style={styles.instructions}>
totalWidth={totalWidth}
</Text>
</View>
);
}
} 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
}
}); AppRegistry.registerComponent('AwesomeProject', () => AwesomeProject);

修改完了代码, 不需要重新部署, 可以直接Reload JavaScript,就马上看到对UI所做的变更。具体操作如下,通过摇晃手机(模拟器输入命令adb shell input keyevent 82)弹出调试菜单点击Reload即可,非常方便。

注意: 后面的在高版本上不需要了

如果你有Chrome浏览器,可以给Chrome浏览器装个扩展包,进行调试。

地址:https://github.com/facebook/react-devtools/releases

下载的程序拖入到Chrome扩展程序中,点击启用,允许访问网络



装好扩展包,当点击第二项调试的时候Chrome浏览器会自动启动,windows系统点击ctrl+shift+j 就来到调试页面,可以看到程序输出的日志。

是不是非常方便啊。

IDE

React Native出来1年多了, 有好多编译器都支持了, 比如WebStorm,Sublime Text 3等等。可以参考http://www.jianshu.com/p/8e9df5f85bca

http://blog.csdn.net/gz_jero/article/details/51503374

更多精彩请关注微信公众账号likeDev,公众账号名称:爱上Android。

最新文章

  1. 一道关于阿里简单面试题的反思C/C++
  2. .net下各个数据类型所占用的字节
  3. div mouseenter 事件在IE下无效
  4. paper 24 :matlab的cat函数
  5. Scout YYF I(POJ 3744)
  6. C++中const关键字详解
  7. Android教程:ImageView 设置图片
  8. Mindset + Know-how+Concepture + Methodology+Technology
  9. php模块memcache和memcached区别分析
  10. 【socket编程】select manual page翻译
  11. Spark ML源码分析之一 设计框架解读
  12. SRAM/DRAM,PROM/EPROM/EEPROM,NOR/NAND FLASH区别
  13. 【SSH系列】-- hibernate基本原理&amp;&amp;入门demo
  14. 实战!基于lamp安装Discuz论坛-技术流ken
  15. 学习ML.NET(1): 构建流水线
  16. FZU软工第十一次作业-软件产品案例分析
  17. hdu 5493 (2015合肥网赛) Queue
  18. C 中结构体对齐
  19. 怎样实现在DBGrid中双击选择整行,并且可以多选?谢谢!!
  20. EM算法原理详解

热门文章

  1. Java 基本数据类型 相互转换
  2. netbeans调试webapp 只能用localhost访问
  3. Birt设置导出格式和去掉多余按钮的方法
  4. day37 04-Hibernate二级缓存:list和iterate方法比较
  5. 用两个栈实现队列功能【剑指offer】
  6. 词袋和 TF-IDF 模型
  7. Qt5.9.1_MSVC2017版本调试环境安装
  8. 【笔记】LR录制方式和常用函数
  9. FPGA按键功能
  10. .Net Core 授权系统组件解析