# Tell me about JS [Lien du diapo](https://hackmd.io/@laurentC35/Hk99o5FWj) --- ## Petit rappel ---- Quelles sont les techno/langages pour le web ? ---- - JS - HTML - CSS --- ## Rappel général des applications JS ---- - Découpage des responsabilités entre IHM et Traitement - Traitement -> back-end en Java - IHM -> Front-end en Javascript ---- ### Client Riche ---- __Pourquoi ?__ - le FRONT & le BACK n'échangent que des données à plat (.json) - le FRONT se charge de : - mise en forme - contrôles - authentification - un peu de traitement (filtre, calcul, ...) - logique métier ---- ### Client sans session ---- - le back expose une API dans une logique "REST" - il n'y a donc pas de session - les appels API (au back) sont indépendant les uns des autres - logique plus de contexte ---- ### Contexte ? ---- - l'appel à l'API s'effectue en donnant toutes les informations nécessaires - identité de la personne - ressource ou l'action à modifier/faire - contenu - le contexte est auto-portant : ne dépend pas d'une requête précédente ! --- ## Cool, mais comment on fait ? ---- Avant de parler de reparler de contexte, parlons d'abord du framework utilisé à l'Insee : ![React](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRiB6-rudKyUjQWCRMGSVmrNHca_B_4lkypLQ&usqp=CAU) ---- ### React, qu'est ce que c'est ? ---- React est une bibliothèque JavaScript libre développée par Facebook depuis 2013 - à base de composant - déclarative - réutilisable - composant à état ---- # C'est tout ! ---- ## Concretement, ça marche comment ? ---- On écrit des composants en JSX ```jsx const HelloMessage = ({name}) => { return ( <div> Salut {name} </div> ) } ``` ---- On peut ajouter du style ```css! .hello-div{ background-color: red; } ``` ---- ```jsx! import 'helloMessage.css' const HelloMessage = ({name}) => { return ( <div className='hello-div'> Salut {name} </div> ) } ``` ---- Ou utiliser directement des libraires graphiques prêtes à l'emploi ! ```jsx! import Card from '@mui/material/Card'; const HelloMessage = ({name}) => { return ( <Card>Salut {name}</Card> ) } ``` ---- ### Souvent on utilise les deux --- ## Des librairies ? ---- <!-- .slide: style="font-size: 70%;" --> En fait un code Javascript fonctionne un peu comme un code en Java: - on peut inclure des dépendances "externe" - via NPM (~ maven ) - carte d'identité du code/projet : `package.json` (~ pom.xml) - on développe via un environnement dédié : NodeJS (~ JdK) - le tout dans un IDE : VSCode (~ IntelliJ/Eclipse) ---- Une appli React n'est en fait qu'un projet JS qui inclus comme dépendances: - React - React-dom - et éventuellement d'autres libraires utiles (mui, react-router-dom, etc...) --- ## Parlons des bonnes pratiques ---- ### Organisation du Code ---- Comme en java, il faut bien ranger le code pour s'y retrouver facilement, voilà un exemple typique : ``` | public | src | ui | auth | router | others... | core | api | hook | constants | i18n | package.json | DockerFile ``` ---- ### Tests ToDo ! ^^ ---- ### Code en lui-même ---- - linter & prettier : pour formater le code à la sauvegarde ---- <!-- .slide: style="font-size: 70%;" --> Les composant doivent être : - les plus unitaire possible : correspond à élément graphique - un état simples - les fonctions de manipulations de données externalisé dans "utils" - les fonctions d'appel à l'API, externalisé aussi ! --- ### CI / CD & Docker ---- - Image Docker nginx (comme un serveur Apache)
{"metaMigratedAt":"2023-06-17T09:57:00.572Z","metaMigratedFrom":"Content","title":"Tell me about JS","breaks":true,"contributors":"[{\"id\":\"998a4349-3057-4892-bddb-a3f83e95adbd\",\"add\":3746,\"del\":56}]"}
    150 views