Le paradigme
REACT
QUI SUIS-JE ?
Introduction
Comment Était le web avant React
petit apartÉ
Il y avait le Developpeur Web et l'intégrateur
Evolution du web
Guerre des navigateurs, firefox, chrome...
Le web 2.0
la genÈse des applications riches
- Le web est perçu comme une plate-forme
- L'internaute est co-développeur des applications
- La richesse se trouve dans les données
- Le web 2.0 s'appuie sur l'intelligence collective
- Il est nécessaire d'avoir des interfaces souples et légères
- Le logiciel se libère du PC
- ...Mais niveau archi et structuration.. :/
Petit ApartÉ 2
Il y a toujours le Developpeur Web et l'intégrateur...
...mais il fait un peu de JS
ANgularjs
fait son apparition en 2009
sans oublier:
- MeteorJS
- BackboneJS
- EmberJS
MAIS...MVC, POO..
Apporter la philosophie back-end dans le front-end
Le front-end est un écosystème très complexe, contrairement au back-end
Problèmes de performance dans le DOM
en parlant du dom
Petit ApartÉ 3
BACK-END DEVELOPER, FRONT-END DEVELOPER ET INTEGRATEUR
REACT
f(data) = ui
- Code plus clair (!)
- L'app est prédictible
- Composants réutilisables
- Gestion d'état
- Gérer toutes les updates d'interface
- Dom virtuel
- Peut être intégré à n'importe quel techno
- Universelle
- Immutabilité
- Programmation fonctionnelle
- Concepts librairies "agiles" vs frameworks monoléthiques
AVANTAGES
React n'a pas de…
… contrôleurs
… directives
… templates
… listeners d'events global
… modèles
Just des composants
Paradigme ?
modulaire
Phase 1
Structure | COMPORTEMENT | Presentation
HTML, CSS & JS
Phase 2
Structure & COMPORTEMENT | Presentation
DO NOT MIX LOGIC AND PRESENTATION
separation
of concerns
Phase 3
Structure & COMPORTEMENT & Presentation
Classic CSS
import styles from './Component.scss'
class Component extends React.Component {
state = {
counter: 0
}
onClick = (e) => this.setState({ count: this.state.count + 1 })
render() {
return (
<div className={styles.Component}"> // Component_xU7az
Je suis un composant React
<h1>{this.state.count}</h1>
<button onClick={this.onClick}>Count Up!!</button>
</div>
)
}
}
CSS-MODULES
.compteur {
background: 'blue';
border: '1px solid black'
}
Phase 4
Structure & COMPORTEMENT & Presentation
MEANWHILE...
const styles = StyleSheet.create({
Component: {
border: '1px solid blue',
background: 'blue'
}
})
class Component extends React.Component {
state = {
counter: 0
}
onClick = (e) => this.setState({ count: this.state.count + 1 })
render() {
return (
<View style={styles.Component}">
Je suis un composant React
<h1>{this.state.count}</h1>
<button onClick={this.onClick}>Count Up!!</button>
</View>
)
}
}
CSS-in-JS
Phase 5
Structure & COMPORTEMENT & Presentation
& API CALL
flux / Redux
flux / Redux
/api/home
/api/campaign/last
/api/menu
/api/user/1
/api/bandeau
Relay / GraphQL
class Todo extends React.Component<Props> {
render() {
const {complete, text} = this.props.todo;
return (
<li>
<div>
<input
checked={complete}
type="checkbox"
/>
<label>
{text}
</label>
</div>
</li>
);
}
}
export default createFragmentContainer(
Todo,
graphql`
fragment Todo_todo on Todo {
complete
text
}
`
)
Structure & COMPORTEMENT & Presentation & API CALL
Structure & COMPORTEMENT & Presentation
Structure & COMPORTEMENT & Presentation
Structure | COMPORTEMENT & Presentation
Structure | COMPORTEMENT | Presentation
Paradigme ?
CONCEPTUEL
REACT-NATIVE
REACT-NATIVE-WINDOWS
REACT-TV
REACT-THREE-RENDERER
REACT-NATIVE-macos
REACT-NATIVE-DESKTOP
REACT-SKETCHAPP
GL-REACT
REACT-GAME-KIT
REACT-360
REACT-NATIVE-WEB
Conclusion
vuejs, angular, RXJS, inferno, preact...
Le paradigme React
By Stéphane Montlouis-Calixte
Le paradigme React
Comprendre l'évolution du web, la nécessité d'une lib telle que React, le changement de paradigme que cela a apporté au développement front-end.
- 484