写在前面的话
背景相关:android开发转react-native(简称RN)。随着大前端时代的到来,RN也走进了更多开发者的视线,原生 + RN在以后也将是APP开发的大趋势。以后原生的不会放下,RN也会继续学习。(以前的关于原生的博客也将陆陆续续转移到简书,虽然没多少东西�┬─┬ ノ( ' – 'ノ))
学前准备
首先需要配置环境,这里可以参考react-native中文网,里面讲解非常详细,会针对所使用的电脑系统来显示不同的教程。还有江清清的技术专栏同样讲解也很明白。
配置好环境后,运行第一个项目hello world
Hello World!
几乎所有语言开始都是hello world,RN也不例外。
打开项目目录
其中index.android.js就是android端的程序入口,index.ios.js就是ios端的程序入口,可以看到官方给出两个文件内容大体是一样的,这也体现了一点:RN里android和ios的代码复用率基本在80%以上。这大大提高了开发速度。如果对语法不熟悉,建议看看阮一峰老师写的React入门。看完后大体上应该会对RN的语言有一个概念。
现在就来修改下index.android.js
来实现我们的helloworld。
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';
class HelloWorld 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}>
Double tap R on your keyboard to reload,{'\n'}
Shake or press menu button for dev menu
</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('HelloWorld', () => HelloWorld);
这里我们只需修改render()
方法就可以去实现helloword(render就是渲染的意思)
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
HelloWorld!
</Text>
</View>
);
}
render方法里只返回了一个html的片段,一个View里包含一个Text,这就是RN里推荐的写法JSX。style里设置的是界面的样式。这里不明白的可以看一下html+css入门。
当然这只是一个最简单的例子(简直LOW爆了(╯‵□′)╯︵┻━┻),对RN里的组件,属性,状态都没有涉及,这些将会出现在下篇React-Native学习笔记中。
写在后面的话
一些学前准备的汇总:
- 环境搭建:http://reactnative.cn/docs/0.31/getting-started.html
- 江清清的技术专栏(React Native专题):http://www.lcode.org/react-native/
- React 入门实例教程:http://www.ruanyifeng.com/blog/2015/03/react.html
- 阮一峰的《ECMAScript 6入门》:http://es6.ruanyifeng.com/ (es6了解即可)
也是刚开始学习RN,小半个月吧,实现了一两个demo,之后会慢慢的将自己的学习过程写下来,一是帮自己回顾,二是帮助一些想学习RN的朋友。
学习路漫漫,吾将上下而求索。