React Native
Desarrollando apps nativas para iOS y Android con JavaScript y React.js
Cristian Yáñez
Desarrollador
github.com/ycanales
React Native nos permite construir aplicaciones nativas para iOS y Android usando JavaScript y React.js
En Mac se puede construir para iOS y Android mientras que en Windows y Linux sólo Android
Soporte
- Xcode
- Homebrew
- NPM
Requerimientos (Mac)
brew install node
brew install --HEAD watchman
npm install -g react-native-cli
Crear proyecto
$ react-native init LaApp
$ cd LaApp
$ open ios/LaApp.xcodeproj
LiveReload y HotReload
Estructura archivos
.
├── android
│ ├── app
│ ├── build.gradle
│ ├── gradle
│ ├── gradle.properties
│ ├── gradlew
│ ├── gradlew.bat
│ ├── keystores
│ └── settings.gradle
├── index.android.js
├── index.ios.js
├── ios
│ ├── LaApp
│ ├── LaApp.xcodeproj
│ ├── LaAppTests
│ └── build
├── node_modules
│ ├── react
│ └── react-native
└── package.json
archivos compilación Android
archivos compilación iOS
entrada de nuestro proyecto
Estructura archivos
https://github.com/eggheadio/react-native-gh-notetaker
.
├── App
│ ├── Components
│ │ ├── Badge.js
│ │ ├── Dashboard.js
│ │ ├── Helpers
│ │ ├── Main.js
│ │ ├── Notes.js
│ │ ├── Profile.js
│ │ └── Repositories.js
│ └── Utils
│ └── api.js
├── README.md
├── iOS
├── index.ios.js
├── notetaker.xcodeproj
└── package.json
Componentes
render() {
return (
<View style={styles.mainContainer}>
<Text style={styles.title}>
Search for a Github User
</Text>
<TextInput
style={styles.searchInput}
value={this.state.username}
onChange={this.handleChange.bind(this)} />
<TouchableHighlight
style={styles.button}
onPress={this.handleSubmit.bind(this)}
underlayColor="white">
<Text style={styles.buttonText}>SEARCH</Text>
</TouchableHighlight>
<ActivityIndicatorIOS
animating={this.state.isLoading}
color="#111"
size="large">
</ActivityIndicatorIOS>
{showErr}
</View>
);
}
Estilos
var styles = StyleSheet.create({
mainContainer: {
flex: 1,
padding: 30,
marginTop: 65,
flexDirection: 'column',
justifyContent: 'center',
backgroundColor: '#48BBEC'
},
title: {
marginBottom: 20,
fontSize: 25,
textAlign: 'center',
color: '#fff'
},
searchInput: {
height: 50,
padding: 4,
marginRight: 5,
fontSize: 23,
borderWidth: 1,
borderColor: 'white',
borderRadius: 8,
color: 'white'
},
buttonText: {
fontSize: 18,
color: '#111',
alignSelf: 'center'
},
button: {
height: 45,
flexDirection: 'row',
backgroundColor: 'white',
borderColor: 'white',
borderWidth: 1,
borderRadius: 8,
marginBottom: 10,
marginTop: 10,
alignSelf: 'stretch',
justifyContent: 'center'
},
});
Ventajas
- Conocimientos ReactJS válidos en web y mobile.
- Respaldado por Facebook.
- Flujo rápido de desarrollo con LiveReload y HotReload.
- Comunidad y recursos de terceros
Desventajas
- Casos avanzados requerirán código nativo para iOS y Android
- El código de interfaces es separado por plataforma**
Recursos
- Pepperoni http://getpepperoni.com/
Tutoriales y componentes de terceros.
- Deco IDE decosoftware.com
Deco IDE
¡Gracias!
Slides: slides.com/ycanales/reactnative
React Native
By Cristian Yáñez
React Native
Desarrollando apps nativas para iOS y Android con JavaScript y React.js
- 718