L'Architecture en Microservices : Approfondissement et Schémas
Pourquoi passer d'un monolithe à une structure en microservice ?
Développeur React voulant passer au mobile ? Cette série est pour toi. Bien que React et RN soient similaires, des différences existent. Avant de commencer en RN, connais ces points clés. Dans cet article, nous explorons les différences majeures entre les deux.
React est une bibliothèque JavaScript (non ce n'est pas un framework !!🤬) pour construire des interfaces utilisateur. Mais ça tu le savais déjà.
React Native, également maintenu par Facebook, permet de créer des applications mobiles pour iOS et Android en utilisant une seule base de code JavaScript. Contrairement aux applications hybrides, les applications React Native utilisent des composants natifs pour fournir une performance et une expérience utilisateur comparables à celles d'une application native.
L'une des premières différences notables est l'environnement d'exécution.
Les composants d'interface utilisateur diffèrent également.
La gestion des styles est une autre différence clé.
La gestion de la navigation entre les différentes vues varie également.
React :
import React from 'react';
import './App.css';
function App() {
return (
<div className="App">
<h1>Bonjour de React</h1>
</div>
);
}
export default App;
React Native :
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
export default function App() {
return (
<View style={styles.container}>
<Text>Bonjour de React Native</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
text: {
fontSize: 20,
},
});
En React, tu peux définir les styles directement dans des fichiers CSS ou utiliser des bibliothèques pour intégrer les styles dans vos composants.
React :
.App {
text-align: center;
}
.App h1 {
color: blue;
}
En React Native, les styles sont définis à l'intérieur de vos composants en utilisant l'API StyleSheet.
React Native :
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
text: {
color: 'blue',
fontSize: 20,
},
});
Naviguer entre les pages est une tâche courante dans toute application. En React et en React Native, cette tâche est réalisée de manière différente.
React avec React Router :
import React from 'react';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
function Home() {
return <h2>Accueil</h2>;
}
function About() {
return <h2>À propos</h2>;
}
function App() {
return (
<Router>
<div>
<nav>
<ul>
<li>
<Link to="/">Accueil</Link>
</li>
<li>
<Link to="/about">À propos</Link>
</li>
</ul>
</nav>
<Route path="/" exact component={Home} />
<Route path="/about" component={About} />
</div>
</Router>
);
}
export default App;
React Native avec React Navigation :
import * as React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import { View, Text, Button } from 'react-native';
function HomeScreen({ navigation }) {
return (
<View>
<Text>Accueil</Text>
<Button title="Go to About" onPress={() => navigation.navigate('About')} />
</View>
);
}
function AboutScreen() {
return (
<View>
<Text>À propos</Text>
</View>
);
}
const Stack = createStackNavigator();
function App() {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Home">
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="About" component={AboutScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
export default App;
Les appels réseau et la gestion de l'état sont également similaires mais nécessitent quelques ajustements pour les environnements mobiles.
React :
import React, { useState, useEffect } from 'react';
function App() {
const [data, setData] = useState(null);
useEffect(() => {
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => setData(data));
}, []);
if (!data) {
return <div>Chargement...</div>;
}
return (
<div>
<h1>Data fetched from API</h1>
<pre>{JSON.stringify(data, null, 2)}</pre>
</div>
);
}
export default App;
React Native :
import React, { useState, useEffect } from 'react';
import { StyleSheet, Text, View, ActivityIndicator } from 'react-native';
export default function App() {
const [data, setData] = useState(null);
useEffect(() => {
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => setData(data));
}, []);
if (!data) {
return (
<View style={styles.container}>
<ActivityIndicator size="large" color="#0000ff" />
</View>
);
}
return (
<View style={styles.container}>
<Text>Data fetched from API:</Text>
<Text>{JSON.stringify(data, null, 2)}</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
text: {
fontSize: 16,
textAlign: 'center',
},
});
Quand on vient de React, il n'est pas très difficile de se mettre à React Native. Les plus grandes difficultés ne viendrons pas du langage mais plutôt du reste. Développer, débuguer, tester sur des mobiles ou simulateur, c'est pas forcément simple tout de suite.
C'est pourquoi je te conseille de lire mes autres articles sur le sujet.