Maison > interface Web > js tutoriel > Une brève histoire de l'ingénierie frontale

Une brève histoire de l'ingénierie frontale

Patricia Arquette
Libérer: 2025-01-27 04:34:10
original
712 Les gens l'ont consulté

A Brief History of Frontend Engineering

Présentation du projet frontal

L'ingénierie avant-end fait référence à la systématisation, à l'automatisation et à la normalisation du développement avant-end à travers une série d'outils, de méthodes et de processus, améliorant ainsi l'efficacité du développement, la qualité du code et la gestion de projet.

spécifiquement, le projet avant-end couvre les aspects suivants:

Développement modulaire
    : L'application complexe avant-end est décomposée en un module ou un composant réutilisable indépendant pour améliorer la maintenance du code du code et promouvoir le travail d'équipe.
  • Chaîne d'outils automatisée : Utilisez des tâches en double dans le développement frontal de divers outils, tels que l'emballage de code (WebPack), Babel, Test (Jest), Style de code et plus joli. Ces outils réduisent les erreurs humaines et améliorent l'efficacité du développement.
  • Contrôle de version : Utilisez des systèmes tels que GIT et d'autres versions de code de gestion du système pour assurer la cohérence du développement coordonné, réaliser le suivi de la version et prendre en charge plusieurs versions du développement.
  • Intégration continue / livraison continue (CI / CD)
  • : connecté de manière transparente les processus de développement, de test et de déploiement par automatisation pour garantir que chaque changement de code peut être mis à jour en toute sécurité. Gestion de l'environnement et support de plate-forme croisée
  • : Utilisez les outils de construction et de déploiement (Docker, Node.js) de la gestion et du développement et de la production pour assurer la cohérence et la fiabilité des différentes plates-formes et de l'environnement.
  • Optimisation des performances : Améliorez la vitesse de chargement de l'application et la vitesse de réponse en utilisant la compression de code, le cache et le chargement paresseux et améliorer l'expérience utilisateur.
  • Spécifications de collaboration et de code de l'équipe : Établir et exécuter les spécifications de code (spécifications JavaScript et CSS), et utilisez des outils d'examen de code (requêtes GitHub) pour maintenir le style de code cohérent au sein de l'équipe et réduire les coûts de maintenance .
  • L'objectif du projet avant-end est de résoudre les défis de la faible efficacité, de la qualité du code incohérente et de la collaboration difficile dans le développement traditionnel avant de l'introduction de processus et d'outils systématiques pour obtenir des processus de développement plus efficaces et stables. L'évolution de l'ingénierie avant
  • Le développement de l'ingénierie avant-end est un processus d'évolution progressive avec les changements de progrès technologique et de demande de développement. L'apparition de node.js
  • est un tournant clé de cette évolution. Ce qui suit est le processus d'évolution complet des projets avant-end:

1. Esèce du site Web statique: les bourgeons développés sur le frontal (au milieu des années 1990 au début de 2000)

Dans le début d'Internet, le site Web était principalement composé de fichiers HTML statiques. Le développement avant-end est très basique. Les développeurs écrivent généralement du code directement dans les éditeurs de texte, vérifient les résultats dans le navigateur, utilisent l'organisation de code de gestion du système de fichiers et manquent d'outils de contrôle de version et de collaboration.

2. L'ère des sites Web dynamiques : exigences initiales en matière d'ingénierie (2000-2005)

Avec la popularité d'Internet et les progrès technologiques, les technologies de pages Web dynamiques telles que PHP, ASP et JSP sont devenues populaires, permettant de générer dynamiquement des pages Web en fonction des entrées de l'utilisateur ou du contenu de la base de données. Au cours de cette période, les frontières de responsabilité entre le front-end et le back-end ont commencé à s'estomper, et le code front-end était souvent intégré dans des modèles back-end. Cela a accru la complexité du développement front-end, déclenchant un besoin initial de solutions techniques.

Afin de faire face aux besoins croissants de développement, des outils de contrôle de version tels que SVN ont été introduits pour aider l'équipe à gérer le code et les versions. Les moteurs de modèles ont également commencé à promouvoir un développement de pages plus modulaire, améliorant ainsi la réutilisabilité du code. Cependant, l’ingénierie front-end en est encore à ses balbutiements, avec peu d’outils automatisés et de flux de travail standardisés, et la plupart des tâches sont encore effectuées manuellement.

3. L'ère AJAX et Web 2.0 : complexité croissante du front-end (2005-2010)

Vers 2005, l'adoption généralisée de la technologie AJAX a permis aux pages Web de mettre à jour les données sans recharger la page entière. Cela rend les interactions frontales plus complexes et dynamiques. Par conséquent, JavaScript est passé d'un langage auxiliaire à un langage de programmation de base, augmentant considérablement la complexité du développement frontal et augmentant la demande de pratiques d'ingénierie.

En attendant :

  • Les bibliothèques comme jQuery simplifient le développement front-end, facilitant ainsi la manipulation du DOM et la gestion des événements.
  • Introduit des outils de construction automatisés préliminaires tels que Ant pour les tâches de base de compression de code et d'empaquetage.

Bien que ces outils fournissent un support d'ingénierie précoce, le développement frontal est encore en grande partie manuel, avec des chaînes d'outils incomplètes et un manque de systèmes d'ingénierie complets.

4. L'émergence de Node.js : un tournant dans l'ingénierie front-end

La sortie de Node.js en 2009 a marqué un tournant majeur dans l'ingénierie front-end. Node.js est construit sur le moteur Chrome V8, brisant la limitation selon laquelle JavaScript ne peut s'exécuter que dans le navigateur, lui permettant d'être exécuté côté serveur. Cette capacité élargit non seulement les cas d’utilisation de JavaScript, mais favorise également grandement le développement de l’ingénierie frontale.

L'impact révolutionnaire de Node.js sur l'ingénierie front-end

L'émergence de

Node.js fournit aux développeurs front-end des outils et un environnement d'exploitation puissants, ce qui favorise grandement le développement de l'ingénierie front-end. Voici les fonctionnalités clés de Node.js et leur impact transformateur :

1. Fonctionnement du système de fichiers (module fs)

Node.js introduit le module fs, permettant à JavaScript d'interagir directement avec le système de fichiers du système d'exploitation pour la première fois. Dans un environnement de navigateur, JavaScript ne peut pas directement lire, écrire ou manipuler des fichiers, ce qui nécessite d'autres langages ou outils pour gérer ces tâches. Avec le module fs, les développeurs peuvent accéder à une API complète pour les opérations sur les fichiers telles que la lecture, l'écriture, la création et la suppression de fichiers.

Cette fonctionnalité est cruciale pour les outils de création front-end. Par exemple :

  • Webpack, un packager de modules largement utilisé, s'appuie fortement sur le module fs pour lire les fichiers sources, analyser les dépendances, transformer le code et générer des packages de sortie.
  • La nature asynchrone du module fs permet également un traitement simultané des fichiers, améliorant considérablement les performances, en particulier dans les grands projets.

2. Fonctions réseau et serveur (module http/net)

Les modules

http et net de Node.js permettent aux développeurs de créer facilement des serveurs HTTP et de gérer les opérations réseau de bas niveau. Ceci est particulièrement utile pour configurer un environnement de développement local et permettre le débogage en temps réel.

  • Exemple de cas d'utilisation : Le Webpack Dev Server construit sur le module http de Node.js fournit un serveur de développement local capable de répondre aux modifications de fichiers en temps réel. Des fonctionnalités telles que le Hot Module Remplacement (HMR) permettent aux développeurs de voir les mises à jour dans le navigateur sans avoir à actualiser la page, améliorant considérablement l'efficacité du développement.
  • Node.js facilite également le proxy des requêtes API, ce qui est crucial pour le découplage front-end et back-end. En agissant comme middleware, Node.js résout les problèmes inter-domaines et simule un environnement de production, garantissant une intégration transparente entre le développement front-end et back-end.

3. Gestion des processus (module child_process)

Le module child_process de Node.js permet aux développeurs de créer et de gérer des processus enfants, d'exécuter des commandes système ou d'exécuter des scripts. Cette fonctionnalité est essentielle pour automatiser les tâches et créer des flux de travail.

  • Des outils comme Gulp et Grunt utilisent le module child_process pour effectuer les tâches suivantes :
    • Compilez SCSS en CSS.
    • Optimisez les ressources d'images.
    • Exécutez des vérifications et des tests de style de code.
  • Dans les pipelines CI/CD, child_process est utilisé pour automatiser des tâches telles que l'exécution de suites de tests, le lancement de builds Webpack ou le déploiement d'applications, rationalisant ainsi l'ensemble du flux de travail de développement et de déploiement.

4. Système de modules et gestion des packages (npm et Yarn)

Node.js adopte le système de modules CommonJS, qui favorise la modularisation et la réutilisabilité du code. Cela permet aux développeurs de diviser des projets complexes en modules plus petits et plus ciblés, ce qui facilite la maintenance et l'extension de la base de code.

  • npm (Node Package Manager)  : fourni avec Node.js, npm est l'un des plus grands écosystèmes de packages open source au monde. Il permet aux développeurs d'installer, de gérer et de partager facilement des modules. Par exemple :
    • Des frameworks comme React et Vue.js peuvent être rapidement installés via npm.
    • Les bibliothèques utilitaires comme Lodash et Axios accélèrent le développement en fournissant des solutions prêtes à l'emploi.
  • Yarn : Gestionnaire de packages alternatif développé par Facebook, Yarn résout les défis de gestion des performances et des dépendances, offrant une plus grande vitesse et fiabilité. Yarn est particulièrement efficace pour gérer des arbres de dépendances complexes dans les grands projets.

Ces outils simplifient non seulement la gestion des dépendances, mais favorisent également un écosystème florissant de packages réutilisables, augmentant ainsi la productivité et l'innovation du développement front-end.

5. Cohérence multiplateforme

Les capacités multiplateformes de Node.js garantissent que la chaîne d'outils de développement front-end maintient un comportement cohérent sur différents systèmes d'exploitation. Que les développeurs travaillent sous Windows, macOS ou Linux, Node.js fournit un environnement unifié pour les outils et les processus.

  • Exemple : Webpack, ESLint et d'autres outils basés sur Node.js ont les mêmes fonctionnalités, indépendamment du système d'exploitation, réduisant les problèmes de compatibilité et augmentant l'efficacité des équipes, en particulier dans les équipes distribuées à l'échelle mondiale.

Comment Node.js révolutionne l'ingénierie front-end

Node.js remodèle fondamentalement l'ingénierie frontale en fournissant un environnement d'exécution puissant, une prise en charge complète du système de fichiers, de puissantes capacités de mise en réseau et un écosystème florissant de modules et d'outils. Ses principales contributions comprennent :

  • Automation et efficacité : des outils tels que Webpack, Babel et ESLint s'appuient sur Node.js pour l'automatisation de la construction, la vérification du style de code et l'optimisation du code.
  • Développement en direct : le serveur de développement local alimenté par Node.js et la fonction de rechargement en direct améliorent l'expérience de développement.
  • Workflow simplifié : les pipelines CI/CD et les exécuteurs de tâches automatisés exploitent Node.js pour garantir un processus de déploiement fluide.
  • Un vaste écosystème : Grâce à npm et Yarn, les développeurs ont accès à un riche écosystème de modules, frameworks et bibliothèques réutilisables.

En comblant le fossé entre le développement front-end et back-end, Node.js alimente également le JavaScript full-stack et les applications isomorphes (telles que Next.js et des frameworks tels que Nuxt.js) ont ouvert la voie à une frontière encore plus floue entre client et serveur.

La maturité de l'ingénierie front-end moderne (2015 à aujourd'hui)

Depuis 2015, l'adoption de frameworks front-end modernes tels que React, Vue.js et Angular a ouvert la voie basée sur les composants développement ère. Ce changement de paradigme favorise davantage la modularité et l'ingénierie frontales en permettant aux développeurs de diviser des applications complexes en composants réutilisables indépendants.

À ce stade, Node.js est devenu l'épine dorsale de l'ingénierie frontale moderne. Des outils et des pratiques tels que Webpack, Babel et ESLint sont devenus des standards de l'industrie, permettant des flux de travail hautement automatisés. Voici un aperçu des évolutions clés durant cette période :

1. Développement de composants

Les frameworks modernes tels que React, Vue.js et Angular mettent l'accent sur l'architecture basée sur les composants, permettant aux développeurs de :

  • Encapsulez l'interface utilisateur et la logique dans des composants indépendants.
  • Réutilisez les composants dans différentes parties de votre application.
  • Maintenir une séparation claire des préoccupations pour améliorer la maintenabilité et l'évolutivité du code.

Par exemple :

  • React introduit le concept de développement déclaratif d'interface utilisateur, facilitant la gestion dynamique de l'état et du rendu des vues.
  • Vue.js fournit un framework léger mais puissant avec une API flexible pour créer des interfaces utilisateur interactives.
  • Angular fournit un framework complet avec des solutions intégrées d'injection de dépendances, de gestion d'état et de routage.

2. Le rôle des outils de build

Des outils tels que Webpack, Rollup et Parcel font désormais partie intégrante du processus de développement front-end, automatisant les tâches suivantes :

  • Code Packaging : combinez des modules et des dépendances dans des packages optimisés pour les environnements de production.
  • Transpilation : utilisez Babel pour transformer le JavaScript moderne (par exemple ES6) en une version compatible avec les anciens navigateurs.
  • Partage de code : divisez les applications volumineuses en packages plus petits qui peuvent être chargés à la demande pour améliorer les performances.
  • Exemple : Webpack et son riche écosystème de plugins et de chargeurs permettent aux développeurs de :
    • Optimisez les ressources (telles que les images, CSS et JavaScript).
    • Activez des fonctionnalités avancées telles que le remplacement de module à chaud (HMR) pour le développement en temps réel.
    • Implémentez le Tree Shaking pour éliminer le code inutilisé, réduisant ainsi la taille du bundle.

3. Vérification et formatage du style du code

Des outils comme ESLint et Prettier sont devenus la norme pour maintenir un style de codage cohérent et éviter les erreurs courantes :

  • ESLint : appliquez les normes de codage en signalant les problèmes potentiels et en appliquant les meilleures pratiques.
  • Plus joli : formatez automatiquement le code pour garantir la cohérence entre les équipes.

Ces outils réduisent les frictions dans les environnements collaboratifs, permettant aux développeurs de se concentrer sur les fonctionnalités plutôt que sur les conflits de style.

4. Intégration et livraison continues (CI/CD)

Les pipelines CI/CD sont essentiels pour automatiser les tests, la création et le déploiement d'applications frontales :

  • Des outils tels que Jenkins, GitHub Actions et CircleCI s'intègrent parfaitement aux systèmes de build basés sur Node.js pour automatiser chaque étape du développement.
  • Les frameworks de tests automatisés tels que Jest et Cypress garantissent la fiabilité et la qualité du code avant le déploiement.

Cette automatisation garantit des releases plus rapides, plus sécurisées et plus cohérentes, même pour des applications complexes.

5. JavaScript full-stack et applications isomorphes

L'essor des frameworks comme Next.js (pour React) et Nuxt.js (pour Vue.js) a introduit le concept de JavaScript isomorphe (ou universel) :

  • Ces frameworks permettent aux développeurs d'utiliser la même base de code pour le rendu côté serveur (SSR) et le rendu côté client (CSR).
  • SSR améliore les performances et le référencement en pré-rendu les pages sur le serveur, tandis que CSR garantit une interactivité riche dans le navigateur.

Cette approche unifie davantage le développement front-end et back-end, améliorant ainsi l'efficacité et permettant une expérience transparente.

6. Microservices et architecture micro-front-end

Node.js favorise également l'adoption de Microservices et de Microfrontends :

  • micro-service : L'application est divisée en services de couplage indépendants et lâches, ce qui les rend plus faciles à développer et à maintenir.
  • Le front-end
  • : l'application avant-end est divisée en composants plus petits et plus indépendants, généralement développés et déployés par différentes équipes. Fédération des modules Et d'autres outils de WebPack simplifient l'intégration du micro frontal.
  • 7. Optimisation des performances

Les outils et la technologie modernes ont considérablement amélioré les performances de l'application avant:

Compression de code
    :: Fichiers JavaScript et CSS compressés pour réduire la taille du fichier.
  • Chargement paresseux : Chargez des ressources et des modules uniquement si nécessaire pour améliorer le temps de chargement initial.
  • Caches : Utilisez les travailleurs du service et le cache HTTP pour récupérer les ressources plus rapidement.
  • L'optimisation des performances est devenue la partie fondamentale du processus du projet pour assurer une meilleure expérience utilisateur. Node.js: Le pilier de base du projet avant-end moderne

Aujourd'hui, node.js

jouent un rôle indispensable à chaque étape du projet avant:

Développement

:: WebPack, Babel, Eslint et d'autres outils tels que Node.js pour la configuration et l'exécution.

Test :: Jest et Mocha et d'autres frameworks utilisent Node.js à partir du kit de test dynamique.

    Déployer
  • ::: Pipelines CI / CD et AWS Lambda et d'autres plates-formes non-serveur exécutent généralement Node.js pour déployer et gérer les applications frontales.
  • Avec son architecture légère, asynchrone et haute performance, Node.js est devenu la base d'un flux de travail avant évolutif, efficace et fiable.
  • Le développement de la modularité avant-end
  • Le développement modulaire en matière d'ingénierie à l'avant est un processus clé pour atteindre la normalisation, l'automatisation et la maintenance. La modification modifie non seulement la méthode organisationnelle du code, mais modifie également l'ensemble du processus de développement de l'ensemble, rendant le développement et le maintien de grands projets plus efficaces et plus fiables. Ce qui suit est un aperçu de l'évolution modulaire à l'avant -end ingénierie: 1. Étape précoce: connexion de script non-module
Aux premiers stades du développement avant-end, les pages Web ont été créées à l'aide de plusieurs fichiers JavaScript indépendants. Ces fichiers sont généralement inclus dans la page HTML via les balises , et tout le code partage la même portée globale. Cette méthode a conduit à certains problèmes:

Pollution mondiale de l'action : Toutes les variables et fonctions restent dans la portée mondiale, augmentant le risque de nommer les conflits.

Il est difficile de gérer les dépendances

: À mesure que l'échelle du projet augmente, les dépendances entre les scripts de gestion deviennent de plus en plus compliquées et faciles à faire des erreurs.

Le code peut être réutilisé

: pas de modularisation, les développeurs recourent souvent à la copie et à la coller du code, ce qui entrave la gestion systématique des fonctions partagées.

<script>

Au cours de cette période, le niveau d'ingénierie à l'avant-end a été très faible et le tissu de code était chaotique, entraînant des coûts d'entretien élevés.

    2. Premières tentatives de modularisation : espaces de noms et IIFE (milieu des années 2000)

    À mesure que la complexité des projets front-end augmente, les développeurs commencent à explorer la modularité pour réduire la pollution à l'échelle mondiale et gérer les dépendances. Deux schémas courants sont apparus au cours de cette période :

    • Espace de noms : les développeurs encapsulent les fonctionnalités associées dans un seul objet, réduisant ainsi le nombre de variables globales et minimisant les conflits de noms.
    • IIFE (Immediately Invoked Function Expression)  : en tirant parti de la portée de la fonction JavaScript, les développeurs enferment le code dans une fonction auto-exécutable, créant une portée privée pour éviter de polluer l'espace de noms global.

    Bien que ces techniques améliorent l'organisation du code, elles sont toujours implémentées manuellement, manquent de gestion systématique des dépendances et ne fournissent pas de mécanisme de chargement de module standard. Ces premiers efforts de modularisation ont jeté les bases de solutions plus avancées, mais sont restés limités en termes de complexité technique.

    3. L'émergence des spécifications CommonJS et AMD (vers 2009)

    Pour répondre à la demande croissante de modularité, la communauté a proposé deux spécifications formelles de modularisation : CommonJS et AMD (Asynchronous Module Definition). Ces spécifications marquent une avancée importante pour la modularité frontale.

    • CommonJS : Conçus à l'origine pour le JavaScript côté serveur, les modules CommonJS utilisent require pour importer des dépendances et module.exports pour exporter des fonctions. Bien qu'il soit devenu le standard pour Node.js, sa nature synchrone le rendait moins adapté aux environnements de navigateur.
    • AMD : Conçu spécifiquement pour les environnements de navigateur, AMD prend en charge le chargement de modules asynchrone. Des outils comme RequireJS implémentent la spécification AMD, permettant aux développeurs de définir des modules à l'aide de define et de les charger de manière asynchrone à l'aide de require.

    Ces spécifications introduisent une norme de définition et de gestion des modules, améliorant considérablement la modularisation et la gestion des dépendances. Cependant, la mise en œuvre de ces standards dans des projets de grande envergure reste complexe et nécessite souvent une configuration supplémentaire.

    4. L'essor des outils de build : packaging de modules et gestion des dépendances (milieu des années 2010)

    À mesure que les projets front-end prennent de l'ampleur, la gestion des dépendances et l'optimisation des performances nécessitent plus qu'une simple discipline modulaire. Des outils de création tels que Webpack, Browserify et Rollup ont émergé pour relever ces défis.

    • Webpack : un puissant regroupeur de modules qui analyse les dépendances et regroupe les modules dans des packages optimisés pour la production. Il prend en charge différents formats de modules (modules CommonJS, AMD, ES6) et fournit des fonctionnalités avancées telles que le fractionnement de code et le chargement paresseux.
    • Browserify : un premier outil qui permet aux développeurs d'utiliser des modules CommonJS de style Node.js dans le navigateur.
    • Rollup : concentrez-vous sur le packaging des modules ES6 pour générer des fichiers de sortie plus petits et plus efficaces, particulièrement adaptés aux bibliothèques et aux frameworks.

    Ces outils automatisent le processus de packaging et d'optimisation, permettant aux développeurs d'organiser le code de manière modulaire pendant le développement tout en générant des ressources optimisées pour les environnements de production. Cette époque a marqué un grand pas en avant dans l’ingénierie front-end, les outils de construction devenant au cœur du flux de travail de développement.

    5. Établissement de la norme du module ES6 (2015)

    En 2015, la sortie d'ECMAScript 6 (ES6) a introduit un système de modules natif, ce qui a constitué une étape importante dans la modularisation frontale. Le système de modules ES6 (ESM) devient la norme pour les navigateurs et les serveurs.

    • Fonctions du module ES6 :
      • Utilisez import et export pour importer et exporter des modules.
      • Analyse statique des dépendances, prend en charge le tremblement d'arbre et d'autres optimisations.
      • Compatible avec les outils de construction modernes, permettant une intégration transparente dans les flux de travail de développement.

    Le système de modules ES6 simplifie le développement modulaire en fournissant une syntaxe claire et cohérente, éliminant le besoin de spécifications de modules externes. En raison de leur prise en charge généralisée dans les navigateurs et outils modernes, les modules ES6 sont devenus le choix par défaut pour la modularité frontale.

    Le développement de la modularisation a toujours été le processus central de l'évolution de l'ingénierie front-end. Depuis les débuts des connexions de scripts jusqu'à l'adoption des modules ES6, chaque étape a apporté des améliorations significatives en termes d'organisation, de maintenabilité et d'efficacité du code. Les outils et normes modernes, tels que les outils de build et les modules ES6, ont fait de la modularisation une partie intégrante du développement front-end, offrant ainsi un support puissant pour la gestion et l'optimisation de projets à grande échelle.

    Conclusion

    L'ingénierie front-end est passée du développement Web statique manuel aux besoins d'ingénierie initiaux de l'ère du Web dynamique, et enfin à l'automatisation complète et au développement modulaire apportés par Node.js. L'introduction de Node.js a grandement favorisé l'innovation des chaînes d'outils front-end, permettant au processus de développement front-end d'atteindre un degré élevé de standardisation, d'automatisation et de modularisation.

    Le développement front-end moderne s'appuie sur ces outils et normes modulaires pour permettre une gestion et un déploiement efficaces de projets complexes.


    Nous sommes Leapcell, votre meilleur choix pour héberger des projets Node.js.

    A Brief History of Frontend Engineering

    Leapcell est la plateforme sans serveur de nouvelle génération pour l'hébergement Web, les tâches asynchrones et Redis :

    Support multilingue

    • Développez avec Node.js, Python, Go ou Rust.

    Déployez un nombre illimité de projets gratuitement

    • Il vous suffit de payer les frais d'utilisation - pas de demande, pas de frais.

    Avantages de coûts inégalés

      Payer à la demande sans avoir à être inactif.
    • Par exemple: 25 $ prend en charge 6,94 millions de demandes, avec un temps de réponse moyen de 60 millisecondes.
    Expérience des développeurs simplifiés

    UI intuitif, paramètres faciles.
    • Pipeline CI / CD automatique complet et intégration Gitops.
    • Les indicateurs de temps réel et les enregistrements de journal fournissent des informations opérationnelles.
    • Expansion facile et haute performance

    Extension automatique pour gérer facilement les hauts et la fusion.

      Zero Fondements de fonctionnement - Just Focus on Construction.
    • Apprenez plus d'informations dans le document!

    Suivez notre x: @LeapCellHQ

    A Brief History of Frontend Engineering

    Lisez notre blog

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal