Au cours des dernières années, j'ai eu l'occasion de travailler sur des projets intéressants, de nature complexe avec un développement continu, de mettre à niveau constamment, de refactoriser et de leur ajouter de nouvelles fonctionnalités.
Cet article couvrira les plus grandes surveillants de codage que la plupart des développeurs PHP font, lorsqu'ils traitent des projets moyens et grands. Des surveillants tels que ne pas faire de différenciation entre les environnements de développement ou ne pas mettre en œuvre la mise en cache et la sauvegarde.
Les exemples ci-dessous sont en PHP, mais l'idée derrière chaque problème est générique.
La racine de ces problèmes réside principalement dans les connaissances et l'expérience des développeurs, en particulier son absence. Je n'essaye pas de frapper personne, je ne me considère pas comme le développeur parfait qui sait tout, alors n'apportez pas avec moi.
D'après mon expérience, nous pourrions classer ces problèmes en trois groupes principaux: le niveau de conception, le niveau d'application et les surveillants au niveau de la base de données. Nous allons briser chacun séparément.
La seule question que je puisse poser est: pourquoi? Pourquoi ne tournez-vous pas sur les rapports d'erreur lors du développement d'une application?
PHP a de nombreux niveaux de signalement des erreurs, et tout devrait être activé dans la phase de développement.
Si vous pensez que les erreurs ne se produiront jamais, vous codiez pour le scénario idéal, ce qui ne se produit que dans un monde idéal.
Les rapports d'erreurs et affichage de ces erreurs ne sont pas les mêmes non plus. error_reportting () définit le niveau d'erreurs (par exemple, avis, avertissements, erreurs mortelles) et Display_errors contrôle si ces erreurs seront publiées ou non.
Les rapports d'erreur doivent toujours être au paramètre le plus élevé de développement: error_reportting (e_all); et ini_set ('display_errors', true);
Remarque: E_ALL est le plus élevé depuis PHP 5.4, car les erreurs E_strict sont devenues une partie de E_ALL dans PHP 5.4. Si vous utilisez une version PHP plus ancienne que 5.4, utilisez Error_Reporting (E_ALL | E_STRICT); Pour inclure également des avertissements d'erreur stricts.
La suppression des erreurs utilisant l'opérateur @ est encore pire que de ne pas l'allumer du tout, car vous balayez consciemment de la saleté sous le tapis. Vous savez que l'erreur se produit, vous voulez juste le cacher, fermer la tâche et rentrer chez vous tôt. Ce que vous ne réalisez pas, c'est que construire quelque chose sur une fondation tremblante aura des conséquences beaucoup plus importantes plus tard.
Vous pouvez lire une explication approfondie à ce sujet ici.
Développer un projet doit se produire avec la journalisation à l'esprit dès le début. Vous ne pouvez pas simplement boulonner la journalisation à la fin.
La plupart des développeurs utilisent la journalisation d'une manière ou d'une autre, mais presque aucun d'entre eux ne prend le temps de vérifier réellement ces journaux pour les erreurs. Quel est l'intérêt de l'exploitation de l'exploitation si personne ne regarde les journaux?
Les recommandations PSR existent pour la journalisation, PSR-3 est exact, et cet excellent article explique comment implémenter la journalisation PSR-3.
La mise en cache peut être effectuée de différentes manières à plusieurs niveaux dans une application, par exemple au niveau du serveur, au niveau de l'application, au niveau de la base de données, etc.
La mise en cache devrait également être mise en œuvre dès le début. Vous pouvez toujours le désactiver en développement, mais assurez-vous que tout fonctionne une fois qu'il est poussé vers un environnement de production.
Au niveau du serveur, vous pouvez utiliser un vernis, qui est un proxy HTTP inversé, il stocke des fichiers en mémoire et il doit être installé devant le serveur Web.
Pour accélérer PHP, vous pouvez installer / activer un cache Opcode, qui optimise la compilation en code d'octets des scripts PHP. Pour PHP 5.5 et plus tard, un cache OPCode est déjà compilé dans le noyau appelé Opcache.
Vous pouvez en savoir plus en profondeur dans cet article: SitePoint PHP - Opcache non diffusé.
Avant PHP 5.5, vous pouvez également utiliser APC, qui a également des fonctionnalités de cache utilisateur.
Au niveau de l'application, vous pouvez utiliser APCU qui est le cache utilisateur extrait de l'APC, un autre cache qui a des fonctionnalités similaires à l'APCU, ou Memcached qui est un système de mise en cache distribué et il a une prise en charge de PHP solide. Memcached peut également être utilisé pour mettre en cache les requêtes de base de données.
Il existe quelques techniques lors de la mise en œuvre de la mise en cache dans une application. Une bonne pratique consiste à mettre en cache des données qui ne changent pas très souvent, mais qui est interrogée à plusieurs reprises.
La base de données de cache requiert fortement, car la base de données est toujours le plus grand goulot d'étranglement de chaque application PHP.
Combien de fois avez-vous vu quelqu'un implémenter son propre algorithme de cryptage de mot de passe? Malheureusement, cela se produit encore aujourd'hui, parce que le manque de connaissances ou plus dangereusement, à cause d'une attitude «je le sais mieux».
Eh bien, je déteste vous apporter la mauvaise nouvelle, mais 99% du temps que vous ne le connaissez pas mieux.
Ces meilleures pratiques et modèles de conception ont été pensés et créés pour une raison par les ingénieurs logiciels bien plus intelligents que vous et moi, le seul travail du développeur est de choisir le bon modèle pour le travail.
Il existe de nombreux livres et ressources sur ce sujet. J'en mentionnerai deux:
Les tests doivent être ajoutés pour chaque fonctionnalité de l'application Web, mais les tests sont bons pour rien, tout comme les journaux, si personne ne les regarde et exécute réellement le code de test pour voir si quelque chose se casse.
Les tests d'exécution manuellement sont un processus fastidieux. Heureusement, il y a «un outil app pour cela». En fait, il existe de nombreux outils qui peuvent aider à automatiser vos tests, toute une pratique appelée intégration continue.
Un de ces outils largement utilisés dans la communauté PHP s'appelle Jenkins, qui est un serveur CI et peut faire bien plus que tester une application. Sebastian Bergmann a créé un excellent modèle pour Jenkins spécifiquement construit pour travailler avec des projets PHP.
Si vous trouvez cela trop écrasant, écrivez au moins des tests unitaires pour votre application en utilisant phpunit, behat ou phPSCEC. Cela peut sembler beaucoup de travail au début, mais il est prouvé d'innombrables fois que les tests aident les projets à long terme.
Travailler dans une équipe peut être difficile, surtout si chaque membre de l'équipe est utilisé à différents styles de programmation, et sans bonne spécification, un projet peut aller latéralement très rapidement.
Si vous êtes en équipe et que vous n'inspeignez pas le code des autres, vous devriez vraiment le faire. Tout comme les tests unitaires, il aide un projet à rester propre et cohérent.
La différence entre l'examen et l'audit est le moment où vous inspectez le code. L'examen se produit généralement avant que tout code soit fusionné sur la base de code et l'audit après la fusion du code.
La révision est une bien meilleure chose à faire, car vous avez la possibilité de parler du code, de suggérer des améliorations ou des correctifs avant qu'il ne soit fusionné avec le code des autres membres de l'équipe.
L'inconvénient des revues est que son développement bloque, car avant chaque fusion (après tous les tests, au moins deux développeurs doivent discuter du code, et c'est là que l'audit entre en jeu.
L'audit se produit après la fusion, et elle n'est pas bloquante, mais elle est nettement moins puissante, car elle manque l'opportunité de capter les bugs dès le début.
L'audit est encore mieux que d'inspecter le code du tout.
Pour aider ce processus à aller aussi fluide que possible, vous pouvez utiliser l'outil appelé Phabricator, qui a été créé spécifiquement à cet effet par les bons ingénieurs de Facebook. Il prend en charge les deux stratégies d'inspection du code.
Vous êtes-vous jamais retrouvé ou entendu parler des cas où un code insignifiant et passe-partout a été fusionné et que tout l'enfer s'est détaché? Je l'ai sûr.
La plupart du temps, cela se produit parce que les développeurs sont paresseux et écrivent du code pour le scénario idéal, où la base de données échoue, les erreurs mortelles PHP et le piratage de serveur sont inexistantes.
> Le code doit être écrit dans le scénario opposé exact, les développeurs doivent écrire du code pour le pire scénario possible auquel ils peuvent penser, et même alors le code ne couvrira pas un cas de coin obscur où l'utilisateur tape dans un $ signe et a un accès complet à l'administrateur complet.
En supposant que votre serveur ne sera pas piraté ou que votre code ne se cassera pas à un moment donné et que votre base de données sera toujours opérationnelle est tout simplement erronée. Le code de production doit couvrir ces scénarios et journaliser les erreurs en conséquence.
Dans PHP, il est si facile de commettre des erreurs sans même s'en rendre compte. Cela est principalement dû aux mauvaises décisions de conception des langues qui ont été prises dans le passé et non corrigées dans le temps.
PHP veut faciliter les développeurs de ne pas penser à la sécurité, aux encodages et aux cas d'angle, où en fait les développeurs devraient en être très conscients et toujours pratiquer la programmation défensive.
La plupart des développeurs PHP nouveaux sur PHP n'utilisent pas la programmation orientée objet dans leur code, car le concept est un peu difficile à saisir au début. La POO a été utilisée pour la première fois dans les années 1960 et constamment raffinée au fil des ans, il y a une tonne d'informations à ce sujet sur le Web.
De plus, la POO est bien plus que le simple code procédural organisé en classes.
Le concept des objets, des propriétés, des méthodes, de l'héritage, de l'encapsulation, etc. fait tous partie intégrante de la POO.
Un développeur qui utilise ces principes connaît correctement les modèles de conception OO, les principes solides (responsabilité unique, sous-clôturé, substitution de Liskov, ségrégation d'interface et inversion de dépendance) et comment écrire du code propre en général, code flexible, ne fait pas Il n'a pas de dépendances codées en dur et est facile à étendre et à construire.
Alejandro Gervasio couvre ces principes de haut en bas.
Il n'est jamais trop tard pour en savoir plus sur la POO et commencer à écrire du code propre qui ne repose pas sur des dépendances dures (vous en regardant, PHP frameworks).
ce que font la plupart des développeurs lorsqu'ils sont criés à "Rapide, le client a besoin de cette fonction le serveur en direct. C'est ce qu'on appelle le codage à la volée ou le codage de cowboy.
Comme dans toutes les autres industries, dans le développement de logiciels, les workflows et les processus sains doivent être mis en œuvre pour qu'un projet réussit.
PHP et les langues dynamiques en général encouragent les modifications rapides de la base de code, voyant instantanément les résultats de la modification, mais ces changements devraient être limités dans un environnement de production.
seuls les bogues critiques doivent être engagés et poussés directement au serveur de production. Pour le reste, un workflow doit être implémenté tel que GitHub’s Fork and Pull Demande, ou Gitflow. Plus d'informations sur les workflows en utilisant GIT peuvent être trouvées ici: https://www.atlassian.com/git/workflows.
Les gestionnaires et les clients qui pensent que ces processus ne sont pas nécessaires devraient être informés pour voir le contraire. Je n'ai jamais rencontré une seule fois un client qui ne pouvait pas attendre quelques heures ou une journée pour qu'une petite fonctionnalité passe par les étapes nécessaires pour être déployée en direct.
Une autre chose à noter, ne confondez pas la livraison continue avec le codage de cowboy et la gestion chaotique. La livraison continue consiste exactement à mettre en œuvre et à optimiser le flux de travail de développement afin que le code puisse être déployé dans l'environnement de production dès que raisonnablement possible.
Pour soutenir un projet complexe de longue date, la mise à l'échelle doit être à l'arrière de l'esprit de chaque développeur. 99% du temps où une application Web n'a pas besoin de mettre à l'échelle, car elle n'atteindra pas ce type de trafic.
Si vous savez avec certitude que l'application Web sera utilisée par beaucoup, comme une application d'entreprise utilisée par des centaines d'employés en interne dans l'entreprise, vous pouvez effectuer les étapes nécessaires pour permettre une mise à l'échelle plus facile pour le projet.
Alors pourquoi séparer les requêtes de lecture / écriture?
La base de données est toujours le premier goulot d'étranglement dans chaque application. Ce sera le premier à échouer sous un trafic énorme. Pour décharger le trafic vers plusieurs serveurs de bases de données, les développeurs utilisent la réplication maître - esclave ou maître. Master - L'esclave est le plus populaire, qui indique que chaque instruction SELECT doit être acheminée vers le (s) serveur de base de données d'esclaves et d'autres vers le maître afin d'équilibrer le trafic.
Si votre application ne connaît pas la séparation entre les requêtes de lecture et d'écriture, il ne saura pas quel serveur de base de données à connecter.
Gardez cela à l'esprit si vous savez que vous aurez finalement besoin de configurer un maître - Schéma de réplication des esclaves.
Cela se rapporte fortement à la surveillance ci-dessus, mais parfois les développeurs peuvent avoir d'autres raisons de se connecter à plusieurs bases de données. Par exemple, si vous conservez les journaux des utilisateurs, les flux d'activités, l'analyse ou d'autres données où vous savez que les opérations de lecture / écriture se produisent souvent, il est bon de décharger ce trafic vers un autre serveur de base de données.
Assurez-vous d'utiliser une bibliothèque de bases de données qui vous permet de vous connecter à plusieurs serveurs de base de données et il est facile de basculer entre eux. Une bonne solution consiste à implémenter l'APD et à utiliser Aura.sql qui étend PDO.
Cette surveillance se rapporte à la surveillance «coder pour le scénario idéal» ci-dessus. Même chose, plate-forme différente.
Si vous ne testez pas votre base de données (et votre application) pour les exploits, un pirate sera, et il peut réussir.
Les bases de données sont vulnérables à toute une gamme d'exploits, la plus courante est les attaques d'injection SQL.
Utilisez cette feuille de triche et exécutez les requêtes via la bibliothèque d'accès à la base de données de votre application. Écrivez ces instructions dans des champs sur votre frontal comme le nom d'utilisateur, les champs de mot de passe sur une page d'inscription.
Si aucune des requêtes ne passe, vous pouvez vous acheter une bière et célébrer.
sont comme le TOC d'une table, c'est un boost de performances et doit être ajouté à chaque table, aux colonnes sur lesquelles la requête est effectuée (par exemple les colonnes après la clause Where).
Il y a toute une théorie derrière les index de base de données, quand le créer, sur les colonnes et ce qu'il faut couvrir. Une série d'articles distinctes a été écrite à ce sujet.
L'intégrité des données est très importante pour les applications Web. Les sites Web entiers pourraient se casser si les données sont traitées de manière incorrecte.
Vous utilisez des transactions pour des données connexes qui sont gérées ensemble, persistée ou supprimée ensemble.
Par exemple, vous enregistrez des données sur un utilisateur telles que: e-mail, mot de passe du nom d'utilisateur dans le tableau 1 et des données de profil comme le prénom, le nom de famille, l'âge de genre, etc. dans le tableau 2.
Maintenant, si un utilisateur souhaite supprimer son compte, cela devrait être une opération concernant l'exécution de la requête SQL, en utilisant les transactions. Si vous n'utilisez pas de transactions, vous risquez de perdre l'intégrité des données, car les opérations sur les données s'exécutent séparément.
Si la suppression des données de Le tableau 1 réussit, mais échoue sur Tableau 2 , les données de profil pour l'utilisateur resteront dans la base de données et pire Tout, ce sera orphelin.
En utilisant des transactions, cela ne se produira pas, car l'ensemble de l'opération ne réussira que si toutes les opérations distinctes (par exemple, supprimer les données du tableau 1 et du tableau 2) dans la transaction réussissent, sinon la base de données reviendra à l'état précédent .
Le stockage de mots de passe en texte brut ou le lancement de votre propre algorithme de chiffrement en 2014 est inacceptable. La communauté PHP a suffisamment mûri pour mieux savoir maintenant.
Pourtant, il existe probablement des milliers de bases de données où des données sensibles sont stockées à la mendicité non cryptée d'être volées par des pirates.
PHP 5.5 a déjà ajouté des fonctions de hachage solides juste pour cela, l'appelant simplement le hachage de mot de passe. C'est vraiment simple à utiliser - vous créez un hachage à partir du mot de passe en texte brut avec cette méthode:
$hash = password_hash( $password, PASSWORD_BCRYPT );
REMARQUE: il n'est pas nécessaire de salé ce mot de passe, car il est déjà géré pour vous.
Stocker $ Hash dans la base de données, puis vous vérifiez le hachage avec cette méthode:
if ( password_verify( $password, $hash ) ) { ... }
Remarque: Si vous n'avez pas PHP 5.5 (vous devriez vraiment maintenant), vous pouvez utiliser la bibliothèque Password_Compat, qui implémente exactement les mêmes méthodes.
La gestion des données financières est beaucoup plus difficile, car vous devez avoir la conformité PCI sur les niveaux de serveur, d'application et de base de données. Un article plus approfondi est déjà écrit sur le sujet ici: SitePoint PHP - PCI Conformité et développeur PHP.
J'ai vu de nombreux développeurs et même de petites équipes installer des environnements de développement pauvres pour eux-mêmes.
Par exemple, travailler sur une nouvelle fonctionnalité ou corriger un bogue et faire des fichiers directement sur le site Web en direct. C'est faux à tant de niveaux.
Il existe un nombre infini de workflows que les équipes peuvent créer, mais le classique pour le développement Web est d'utiliser au moins trois environnements: développement, mise en scène et production.
Un environnement de développement peut être local pour chaque programmeur, la stadification et la production sont généralement éloignées et partagent certaines pièces entre elles. Le développement est pour le codage, la mise en scène est destinée aux tests et enfin la production est pour la consommation.
La surveillance se produit lorsque ces environnements ne sont pas configurés de la même manière. Par exemple, chaque développeur exécutant une version différente de PHP, ou configuration de mise en scène diffère de la production.
Devinez ce qui se passe? Tu as raison. Tout fonctionnera dans le développement et même dans la mise en scène, et lorsque vous le poussez vers le serveur de production, tout l'enfer se déchaîne, ce qui entraîne de longues nuits et beaucoup de caféine.
pas étonnant que la phrase la plus courante dans les cercles de développement est: «Cela fonctionne pour moi».
Alors, quelle est la solution? Assurez-vous que tout est configuré de la même manière dans chaque environnement. Le système d'exploitation doit être le même, PHP, base de données, serveur Web, tout devrait avoir la même version dans les environnements.
Depuis la création de Vagrant, Docker et VirtualBox, il est très facile de créer des environnements identiques avec la même configuration exacte sur chacun. Si vous n'avez pas utilisé ces outils auparavant, vous devez arrêter ce que vous faites et commencer à les utiliser immédiatement.
Tout se passe bien, le site Web est en direct, lancé à temps, tout est opérationnel, les utilisateurs consomment les belles données. Nom, nom, nom… jusqu'à ce que vous receviez un e-mail à 3h du matin.
La sauvegarde, tout comme la journalisation, la mise en cache, la sécurité et la programmation défensive devraient faire partie intégrante du développement d'une application Web, mais la plupart des développeurs (ou des systèmes) oublient de le faire.
Les sauvegardes doivent également être automatisées, ou si ce n'est pas possible, au moins une sauvegarde manuelle hebdomadaire devrait le faire. Toute sauvegarde est meilleure que pas de sauvegarde.
Stockez votre base de code dans le contrôle de version et utilisez un système de contrôle de version distribué comme Git ou Mercurial. Cette configuration rend les bases de code très redondantes, car chaque développeur qui travaille sur le projet a une version de la base de code. De même, stockez la base de code sur github ou bitbucket, ils ont des sauvegardes.
La sauvegarde de la base de données est plus importante, car son contenu créé par l'utilisateur. Stockez toujours les données réelles et la sauvegarde à différents endroits.
Ne pas sauvegarder les données peut ruiner les entreprises, et cela le fera - voir le célèbre cas de ma.gnolia, l'un des meilleurs sites Web de signets sociaux à l'époque. Wired a une histoire de couverture sur toute la catastrophe.
"Tout est incroyable et personne n'est heureux." - Louis C.K.
Vous n'êtes pas content, car vous ne savez pas ce qui se passe. La mise en œuvre d'un cadre de surveillance intelligent pour votre application est vraiment importante. Le suivi répond aux questions suivantes:
Il est important de connaître les réponses à ces questions à tout moment, et avec une surveillance en temps réel, vous le ferez. Pour y arriver, des outils comme Nagios ou New Relic devraient faire partie de l'infrastructure de votre application.
Utilisez ces connaissances pour être un meilleur programmeur. N'oubliez pas ces surveillants et essayez de ne pas les commettre. Les surveillants au niveau de l'application et de la base de données sont les plus importantes à retenir.
La sauvegarde est très importante, pratiquez toujours la programmation défensive et soyez préparé au pire, c'est ainsi que fonctionne le développement Web. La programmation est difficile, mais une fois bien fait, beaucoup de plaisir.
Ci-dessous, vous trouverez une liste de contrôle de toutes les oublis trouvées dans cet article. Voyez combien pouvez-vous vous traverser dès maintenant et essayez toujours de les traverser tous.
Le développement Web est un processus complexe et il est facile de négliger certains aspects. Certains surveillants courants incluent ne pas optimiser les appareils mobiles, négliger le référencement, ignorer la vitesse et les performances du site Web, ne pas mettre en place un environnement de développement approprié et ne pas envisager la compatibilité des navigateurs. Ces oublis peuvent conduire à une mauvaise expérience utilisateur et peuvent avoir un impact négatif sur les performances et le classement du site Web sur les moteurs de recherche.
La mise en place d'un Web moderne L'environnement de développement implique plusieurs étapes. Tout d'abord, vous devez installer un bon éditeur de texte comme le code Visual Studio ou le texte sublime. Ensuite, installez Node.js et NPM, qui sont essentiels pour le développement de JavaScript moderne. Vous devez également configurer un système de contrôle de version comme Git. Enfin, envisagez d'utiliser un gestionnaire de packages comme le fil ou le NPM, et un coureur de tâche comme Gulp ou WebPack.
L'optimisation mobile est cruciale dans le Web dans le Web Développement alors que de plus en plus d'utilisateurs accèdent à des sites Web à partir de leurs appareils mobiles. Un site Web qui n'est pas optimisé pour le mobile peut conduire à une mauvaise expérience utilisateur, ce qui peut entraîner une baisse des taux d'engagement et de conversion. L'optimisation mobile implique la conception du site Web pour être réactive, ce qui signifie qu'elle s'adapte pour s'adapter à différentes tailles d'écran et à s'assurer qu'elle se charge rapidement sur les appareils mobiles.
Améliorer le référencement de votre site Web implique plusieurs étapes. Tout d'abord, assurez-vous que votre site Web est facilement excité par les moteurs de recherche. Cela implique l'utilisation de balises HTML appropriées, la création d'un plan du site et l'utilisation de fichiers robots.txt. Ensuite, optimisez votre contenu en utilisant des mots clés pertinents, en créant du contenu de haute qualité et en utilisant des balises Meta. Pensez également à utiliser le balisage du schéma pour fournir plus d'informations aux moteurs de recherche.
La vitesse et les performances du site Web sont cruciales pour l'expérience utilisateur et le référencement. Un site Web à chargement lent peut frustrer les utilisateurs et conduire à des taux de rebond plus élevés. De plus, les moteurs de recherche comme Google considèrent la vitesse du site Web comme un facteur de classement. Vous pouvez améliorer la vitesse et les performances de votre site Web en optimisant des images, en minimisant les fichiers CSS et JavaScript, et en utilisant un réseau de livraison de contenu (CDN).
La compatibilité entre les navigateurs signifie que votre site Web fonctionne correctement et semble cohérent sur différents navigateurs Web. C'est important car vos utilisateurs peuvent utiliser différents navigateurs, et un site Web qui ne fonctionne pas correctement sur un navigateur particulier peut conduire à une mauvaise expérience utilisateur. Vous pouvez assurer la compatibilité des navigateurs croisés en utilisant du code conforme aux normes et en testant votre site Web sur différents navigateurs.
Éviter les surveillants communs de développement Web implique une planification minutieuse et tests. Assurez-vous d'optimiser votre site Web pour le mobile et le référencement, configurez un environnement de développement approprié et envisagez de compatibilité entre les navigateurs. Testez régulièrement votre site Web sur différents appareils et navigateurs, et utilisez des outils comme Google Lighthouse pour vérifier les performances de votre site Web et le référence Le système de contrôle de version comme Git vous permet de suivre les modifications de votre code, ce qui facilite la collaboration avec les autres et revient aux versions précédentes de votre code si nécessaire. C'est un outil essentiel pour le développement Web moderne.
Un gestionnaire de packages comme NPM ou YARN vous permet de gérer et d'installer des packages de logiciels , qui sont des pièces de code réutilisables. Il est important dans le développement Web car il facilite la gestion des dépendances et garantit que votre projet a les versions correctes des packages requis.
Un coureur de tâche comme Gulp ou WebPack automatise des tâches répétitives comme la minification, la compilation, les tests unitaires et la libellule. Il est important dans le développement Web car il peut vous faire gagner du temps et vous aider à maintenir une base de code cohérente.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!