Heroku et React: déployez votre premiÚre application

Bonjour Ă  tous. ParallĂšlement au printemps, de nouveaux cours sont venus Ă  OTUS, que nous commençons Ă  introduire aujourd'hui. Recrutement dĂ©jĂ  ouvert pour le cours "React.js developer" . Vous pouvez en savoir plus sur le cours lors du webinaire gratuit , qui se tiendra le 11 mars. Dans le cadre du mĂȘme webinaire, une petite application web sur ReactJS sera dĂ©veloppĂ©e.

Et maintenant, nous vous suggérons de lire l'article sur le déploiement de votre premiÚre application, qui a été écrit par notre auteur indépendant.





Le modĂšle de dĂ©marrage Create-react-app et Heroku sont d'excellents outils pour crĂ©er rapidement des applications basĂ©es sur le cloud, mais la documentation React et Heroku contient Ă©tonnamment peu d'informations sur la façon de dĂ©ployer votre application React sur Heroku. Les Ă©tapes dĂ©crites dans cet article fonctionneront sur tout projet crĂ©Ă© Ă  l'aide de create-react-app . Dans notre article, nous allons installer sur Heroku une application simple Ă  faire avec le backend le plus minimal, juste pour regarder le processus lui-mĂȘme. Mais tout d'abord:

Qu'est-ce que Heroku en général? Pourquoi ai-je besoin de lui?


Heroku est une plate-forme cloud-as-a-service (PaaS) qui prend en charge de nombreux langages de programmation (et elle se vante et se démarque vraiment). L'histoire de Heroku a commencé en 2007, puis Ruby a été le premier langage de programmation. Il prend désormais en charge Java, Node.js, Scala, Clojure, Python, PHP et Go.

Pourquoi ai-je besoin de ce cloud? Je peux acheter un hébergement bon marché


Oui, vous pouvez acheter un hĂ©bergement pour vous-mĂȘme et y installer le serveur Node.js, si ce service est pris en charge sur l'hĂ©bergement. Cependant, les plates-formes cloud ont des qualitĂ©s telles que, par exemple, la mesure de l'Ă©lasticitĂ© et de la consommation - si de nombreux utilisateurs visitent votre service, la plate-forme sera trĂšs probablement automatiquement (ou vous-mĂȘme en utilisant les outils fournis par la plate-forme) modulera ou rĂ©duira le flux. La comptabilisation de la consommation signifie que vous ne paierez que pour les ressources en demande. Les plates-formes cloud ont de nombreux autres avantages, une liste complĂšte peut ĂȘtre trouvĂ©e ici . Eh bien, nous irons directement au dĂ©ploiement.

Créer votre propre application React

De quel type de modĂšle create-react-app s'agit-il ? Il est probablement impossible d’ĂȘtre mĂȘme un peu impliquĂ© dans le dĂ©veloppement d’applications React et de ne pas le savoir. Ce modĂšle fournit React, React-dom, Webpack, ESLint "sous le capot". Bien sĂ»r, vous pouvez crĂ©er vous-mĂȘme votre propre application React, mais pourquoi crĂ©er une application complexe avec un tas de dĂ©pendances lorsque vous pouvez utiliser un vĂ©lo prĂȘt Ă  l'emploi?

Pour commencer, assurez-vous que Node.js est installé .

Pour créer une nouvelle application, entrez les commandes suivantes dans la console:

 npx create-react-app test-app
 cd test-app

Remarque utile
, , create-react-app . npm install -g create-react-app. , ( , ), - , react-scripts 3.4.0. , npm uninstall -g create-react-app.

Ok, vous avez livrĂ© le package et vous souhaitez maintenant le dĂ©ployer. Afin de ne pas dĂ©ployer un package simple avec un composant que create-react-app dĂ©livre hors de la boĂźte, j'ai dĂ©cidĂ© d'Ă©crire une petite application todo, dont le code source, si vous voulez Ă©galement essayer de remplir votre application, peut ĂȘtre trouvĂ© ici . En bref, il y a un enregistrement d'Ă©tat sous la forme de nouvelles entrĂ©es Ă  la mode , d'oĂč le texte des cas et leur identifiant , qui est gĂ©nĂ©rĂ© directement Ă  partir de Date.now(). J'ai participĂ© Ă  la mise en page des composants de Material-UI react .

Vous pouvez mettre cette application pour vous et la déployer avec:

 npm i -D
 npm start

Ensuite, nous avons une occasion incroyable de jouer et de créer nos propres affaires. Cependant, toutes les fonctionnalités de cette application permettent de sauvegarder les choses en état . Je n'ai fait aucune jarretiÚre au serveur ou au moins à localStorage , le but de cet article n'est pas celui-ci. Supposons que je suis trÚs paranoïaque et que je vais enregistrer mes affaires dans une seule inclusion de l'onglet du navigateur.

Créez votre favicon

Pourquoi avons-nous mĂȘme besoin d'un serveur Node.js s'il n'y a pas de travail avec la base de donnĂ©es? En utilisant le serveur, nous donnerons un favicon et tout le reste du code. Dans notre application React , accĂ©dez au dossier public et supprimez le modĂšle favicon.ico Ă  partir de lĂ . Je vais prendre l'icĂŽne d'ici et la transfĂ©rer dans le dossier public.

Créez votre serveur Express

Ensuite, nous créons notre serveur Express pour gérer la build. Directement dans le dossier de l'application, créez un fichier server.jsdans lequel se déroulera le travail de notre backend.

Nous y Ă©crivons ce qui suit:

 const express = require('express');
 const favicon = require('express-favicon');
 const path = require('path');
 const port = process.env.PORT || 8080;
 
 //           
 const app = express();
 app.use(favicon(__dirname + '/build/favicon.png')); 
 
 //    
 app.use(express.static(__dirname));
 app.use(express.static(path.join(__dirname, 'build')));
 
 //  
 app.get('/ping', function (req, res) {
  return res.send('pong');
 });
 
 // html
 app.get('/*', function (req, res) {
 res.sendFile(path.join(__dirname, 'build', 'index.html'));
 });
 app.listen(port);

Puisque nous utilisons des packages express , express-favicon et path , nous devons les installer:

 yarn add express express-favicon path -D

Dans nous package.jsonchangeons la commande de démarrage comme suit:

 "start": "node server.js",

Exécuter la génération

Ensuite, nous devons créer l'application à l'aide de la commande suivante:

 yarn build

Ce serait bien de tester que notre application fonctionne correctement. Pour ce faire, nous recrutons yarn startet Ă©valuons son bon fonctionnement.

Masquer le sourcemap

Peut-ĂȘtre que vous ne voulez pas que quiconque puisse accĂ©der Ă  votre code source. Dans ce cas, vous devez supprimer l'accĂšs au vĂŽtre sourcemap. Pour ce faire, crĂ©ez un fichier dans le rĂ©fĂ©rentiel .envet interdisez la gĂ©nĂ©ration de cartes dans celui-ci:

 GENERATE_SOURCEMAP=false

Remarque utile
Source map ( , , , , - ). — source map, , .

DĂ©ployer directement

Si vous n'avez pas encore de compte sur heroku , vous devez vous inscrire ici . Pour le dĂ©ploiement, vous devrez Ă©galement installer Heroku CLI Ă  partir d'ici . Testez son fonctionnement en Ă©crivant la connexion heroku sur la ligne de commande. Ensuite, vous trouverez une redirection vers le site Web Heroku, oĂč vous devez vous connecter.

Saisissez ensuite le nom de votre application. Dans mon cas, ce sera todoisakura313 , car vous ne pouvez pas utiliser de caractÚres spéciaux ni de soulignements dans le nom de l'application:

 heroku create todoisakura313

Ensuite, nous enverrons notre build en utilisant les commandes suivantes:

 npm install
 git add --all
 git commit -m "first commit"
 git push heroku master 

Ces commandes vous permettront d'ajouter des dĂ©pendances, d'initialiser gitet de tĂ©lĂ©charger l'application elle-mĂȘme.

Bien! En gĂ©nĂ©ral, tout est prĂȘt, maintenant l'application doit dĂ©jĂ  apparaĂźtre Ă  l'adresse https://< >.herokuapp.com/. Vous pouvez ouvrir l'application en tapant les commandes suivantes dans la console:

heroku open

En cas de problĂšme, dĂ©couvrez ce qui ne va pas avec l'Ă©quipe heroku logs --tail. Cependant, en gĂ©nĂ©ral, si vous ne vous ĂȘtes pas Ă©cartĂ© des instructions de cet article, vous auriez dĂ» rĂ©ussir.

C'est tout! Merci pour l'attention. Une application qui fonctionne peut ĂȘtre trouvĂ©e ici , et avec son code fini - ici .

Et ceux qui ont lu jusqu'à la fin, nous vous invitons à un autre webinaire gratuit , dans le cadre duquel vous apprendrez les forces et les faiblesses des frameworks JS les plus populaires pour le développement Frontend, comprendre pour quelles tùches quel framework est le mieux adapté et vous pouvez décider lequel est le meilleur étudier.

All Articles