Je construis un petit projet en utilisant Angular 7. Lorsque vous exécutez
ng serve
et qu'un serveur NodeJS est lancé pour gérer les requêtes, est-ce que chaque requête est bloquée jusqu'à ce que le traitement soit terminé? Nous essayons d'évaluer l'efficacité de son utilisation en production par rapport à l'utilisation d'un serveur d'applications plus traditionnel.
4 Réponses :
Exécutez build --prod pour générer un dossier "./dist".
Ensuite, vous devez mettre cela sur un serveur Web.
Vous pouvez utiliser Angular Server Side Rendering (SSR) pour l'exécuter sur un serveur node.js.
Vous ne devez pas utiliser ng serve pour la production car il utilise webpack-dev-server qui est uniquement conçu pour le développement.
Oui, ma question portait davantage sur la raison pour laquelle je ne devrais pas l'utiliser pour la production. Est-ce parce que chaque requête au serveur NodeJS se bloque jusqu'à ce que le traitement soit terminé?
@Dave met à jour ma réponse
ng serve exécute un serveur de développement Webpack derrière le capot.
un serveur de développement .
Il est conçu pour imiter la version de production et voir votre application finale d'une manière simple.
Si vous n'aviez pas cette commande, vous devrez exécuter une commande comme simplehttpserver a > après avoir reconstruit toute votre application à chaque changement.
C'est un outil pratique fourni par la CLI pour faciliter votre développement, en aucun cas il n'est adapté au mode production. C'est un serveur sans sécurité, sans optimisation, sans performances, sans ... Enfin, sans rien qui fasse un serveur, un serveur. Par défaut, cela ne rend même pas votre application accessible en dehors de votre hôte local. Pas si utile pour un mode production ...
Donc, jamais, je le répète, jamais , n'utilisez cette commande pour votre serveur de production.
Exécutez ng prod --build
Il générera du code de minification dans le dossier "dist". vous devez télécharger le contenu du fichier de ce dossier "dist". Cela donnera une réponse plus rapide pour le chargement des pages Web.
Pour plus de détails, veuillez consulter le Guide de déploiement angulaire
Lorsque vous utilisez ng serve , vous créez un environnement backend nodejs avec un serveur Web pour gérer les requêtes vers votre application angulaire. C'est idéal pour le rechargement et le démarrage rapide lors du développement. Mais avoir besoin de telles ressources pour les pages statiques n'est pas nécessaire.
En fin de compte, Angular est juste un framework vous donnant son avis sur la façon de construire un SPA. Quel que soit le framework ou la bibliothèque que vous utilisez, vous vous retrouverez toujours avec un index.xxx, des fichiers Javascript et d'autres fichiers de ressources provenant de fournisseurs ou en interne. Seuls ces éléments sont importants pour le navigateur qui charge la page Web.
Par conséquent, vous devez créer votre application pour générer les fichiers statiques qui seront servis (c'est-à-dire ng build --prod ). Ensuite, vous avez 2 bonnes options:
J'opterais pour le n ° 2 plutôt que pour le n ° 1 vous obligeant à continuer de faire fonctionner les ressources (CPU, RAM, HDD) pour les fichiers qui ne seront pas demandés si souvent. Je dis pas souvent parce que votre SPA gérera toutes les routes en lui-même dans le navigateur du client (et au moins une fois par jour demandera une actualisation du cache).
Exécutez
ng serve --prodsur votre application. Lisez l'avertissement très clair affiché à l'écran. Évaluation terminée. Utilisez un vrai serveur Web.