J'ai donc un back-end dans ExpressJs et plusieurs routes à ce sujet. Maintenant, je viens de suivre this tutorial pour configurer un RESTful api sur express. Maintenant, je veux passer à une réaction complète sur le frontend, de manière à avoir une API exécutée dans le back-end pour extraire des éléments de la base de données et je pense à utiliser fetch
de react pour obtenir ces données. J'ai vu beaucoup de gens dire que c'est la meilleure façon de le faire. Mais maintenant, il y a un problème, je ne sais pas comment procéder pour cela. J'ai la configuration react-router
donc je suppose que je l'utiliserais. Mais comment puis-je servir ces fichiers côté client? Comment puis-je m'assurer que tous les itinéraires sauf _ /api
servent uniquement mes fichiers js? Comme si j'avais déjà un dossier construit avec un index.html
et un main<hash>.js
. Je les exécute facilement, mais comment puis-je les intégrer à express? Je n'ai pas pu trouver de réponse à cela. Comment puis-je acheminer une application reactjs à l'aide de expressjs? et aussi j’ai vu un tutoriel me dire d’utiliser une route *
mais cela signifie que même mes routes api ne feront que pointer vers cela.
Il existe essentiellement trois méthodes pour générer le rendu d'une application: l'une est le rendu côté serveur, l'autre le rendu côté client et la troisième le rendu isomorphe.
Ainsi, si vous définissez vos itinéraires dans Nodejs et naviguez dans l'application à travers ces itinéraires, le rendu sera entièrement effectué côté serveur.
J'ai vu un tutoriel me disant d'utiliser un * itinéraire mais cela signifie même mon Les routes api ne feront que pointer vers cela. ? Comment puis-je m'assurer que tous les itinéraires sauf les routes/api ne servent que mes fichiers js?
En ce qui concerne ce que vous pouvez faire est
server.get('/api', (req, res, next) => {
//You can handle the request here
})
server.get('*', (req, res, next) => {
//You can handle the request here
})
Vous pouvez définir votre route dans cet ordre. Ainsi, tout appel de '/ api' sera traité par la première route et toutes les autres demandes seront traitées par la deuxième route.
Maintenant, je veux passer à la pleine réaction sur le frontend, de sorte que je vais avoir une API en cours d'exécution dans le backend pour obtenir des informations de la base de données et pense en utilisant chercher chercher de réagir pour obtenir ces données
Ici, vous n’avez pas besoin de ça. Ce sera un rendu côté client complètement
server.get('*', (req, res, next) => {
//You can handle the request here
})
Pour cela, vous pouvez créer une application de réaction à partir de zéro ou utiliser un passe-partout ( https://github.com/facebookincubator/create-react-app ).
Là, vous pouvez définir tout le routage et simplement appeler l'URL http://localhost/api/xxxx
et obtenir les données. Vous pouvez utiliser ces données dans l'interface. Dans ce cas, il y aura un serveur Nodejs qui servira l'interface et le serveur express hébergera le serveur. service 'api' pour obtenir des données.
J'ai réagi-routeur configuré donc je suppose que je l'utiliserais. Mais comment puis-je servir ces fichiers sur le côté client?
Comment puis-je acheminer une application reactjs à l'aide de expressjs?
L’application Reactjs lorsqu’elle est compilée est une combinaison de fichiers statiques composés principalement de html, css, javascript. Si vous souhaitez que votre application soit desservie par votre serveur express.js, vous devez utiliser le rendu isomorphe. C'est de loin la meilleure approche pour le rendu des applications, car elle est bonne pour le référencement et le chargement initial rapide de pages. Cela se fait au prix d’une installation compliquée. Dans ce cas, chaque fois que la page s'actualise ou que la première demande arrive, express servira la première page (index.html) et index.html contiendra les fichiers js et css statiques (regroupés) requis pour le rendu côté client. Le premier rendu sera effectué par le serveur express et le rendu suivant par le navigateur lui-même.