Mise en place de l'environnement
Prêt à mettre en place l'environnement Create React App (Appeler CRA dans la suite) TypeScript (Appeler Ts dans la suite) + Serveur TypeScript ?
info
Vous souhaitez retrouver la stack que je vous fait installer ici ? elle est disponible dans la page StackTech
#
1. Mise en place du client#
1.1. Mise en place de CRACette commande vous permettra d'initialiser votre projet Create-React-App.
#
1.2. Mise en place des PackagesIci vous avez ajouté les packages nécessaires à la création de l'application:
- redux : Vous permet de gérer l'état global de l'application.
- axios : Vous permet de faire des requêtes web.
- react-router-dom : Permet de gérer un système de chemin.
D'autres packages sont utilisés :
- react-grid-layout : Permet la gestion de tableau dynamique (Utiliser dans l'interface de la soundboard)
- socket.io-client : Permet d'écouter et lancer des events en temps réel.
- D'autres packages, dont l'installation est plus compliquée, sont expliqués plus bas.
#
2. Mise en place serveur (Koa + Socket.io)#
2.1. PackageLes packages nécessaires aux développement sont ajoutés ainsi que leur type.
#
2.2 ConfigurationAfin de créer une configuration compléte il est nécessaire de créer quelques fichiers et dossiers.
Commencer par créer à la racine un dossier Server puis place à la configuration Ts.
Ce fichier est la configuration typescript appliquée à votre serveur.
=> S:Build : Intérprétation du code en TypeScript vers JavaScript en temps réel (Le code interprété à nouveau à chaques sauvegardes).
=> S:ProdBuild : Interprétation du code pour la production.
=> S:Watch : Exécution du code du dossier BuildServer.
=> S:DevWatch : Exécution en parallèle du build server ainsi que de l'exécuteur serveur.
#
2.3 Les autres paquetsD'autres packets sont utilisés pour la partie serveur tel que :
- Discordjs : Interface avec discord. Facilite fortement le développement de bot.
- sqlite && sqlite3 : Framework permettant l'utilisation d'une base de donnée.
- nconf : Permet l'utilisation de configuration .json, les chemins vers les bases de donnée ou autre sont sauvegardée de cette manière.
- chalk : Permet la coloration du terminal.
Certains paquets sont utilisés pour la partie vocal de DiscordJs:
- Sodium
- utf-8-validate
- opusscript
- ffmpeg-static
- bufferutil
Tous ces paquets sont utilisés afin de fluidifier les flux audios ainsi que permettre leur lecture.
Un autre paquet est utilisé pour la lecture de vidéo youtube : ytdl-code
#
3. Mise en place de Craco et TailwindCSSCreate React App Configuration Override (Craco) est un package qui permet de modifier le package react-script.
Puis créer un fichier correspondant à la configuration de craco:
Pour appliquer la configuration de craco : penser à modifier votre package.json et remplacer les "react-scripts" par craco.
La prochaine étape consiste à générer puis modifier la configuration de Tailwind, Tailwind est un framework Css complet (et non pas une bibliothèque de composant).
Cette commande vous permettra d'installer tailwindcss. Il ne vous reste plus qu'à modifier la configuration pour lui indiquer où se situe le code source, puis d'ajouter les mots clefs pour intégrer le css dans un de vos fichiers .css :
#
Pourquoi ?#
TailwindJ'ai choisis Tailwind en raison des différences entre les librairies que j'utilisais avant (et je ne retournerais plus en arrière). Par le passée j'utilisais Material-ui, qui en plus d'être lourd possède un grand nombre de fonctionnalité cachées. Oui j'ai choisis de réinventer la roue pour pas mal de fonctionnalités mais connaître les tenants et les aboutissants de celle-ci m'a été extrêmement bénéfique.
#
KoaAncien utilisateur d'Express, je souhaitais apprendre à utiliser de nouveaux frameworks/packets pour la gestion web.
Koa est plus long à mettre en place mais me parais plus robuste sur le long terme.
#
Socket.ioAvec un système comme Discordjs qui est utilisé beaucoup d'event et d'action asynchrone sont effectuées. Une mise à jour de l'interface en temps réel est donc devenue obligatoire et un fonctionnement ou socket.io ainsi que Redux sont en harmonie et devenue très agréable à utiliser.
#
TypeScriptTypeScript, ni plus ni moins qu'un javascript typer, de la rigueur dans le respect des types, des interfaces. Je n'ai pas été jusqu'au bout de ce qu'est capable de m'offrir le typescript. Cependant cette premiére expérience me rend confiant, malgré la mauvaise image que les untilisateurs ont du Js, celle-ci peut très bien dépasser cette dernière.
Un point important et qui m'a beaucoup fait rire (car oui, passer 3h à faire du bug fix et réaliser que le type utilisé pour une variable n'est pas la bonne m'est arrivé.) est qu'il est nécessaire d'installer les packest en "@types" mais il faut faire attention, certains packets fournissent ces types directement.