Maison  >  Article  >  développement back-end  >  Comment inclure JavaScript dans Laravel Un guide étape par étape pour tous les scénarios

Comment inclure JavaScript dans Laravel Un guide étape par étape pour tous les scénarios

Barbara Streisand
Barbara Streisandoriginal
2024-11-08 19:56:02326parcourir

How to Include JavaScript in Laravel  A Step-by-Step Guide for All Scenarios

Comment inclure JavaScript dans Laravel 11 : un guide étape par étape pour tous les scénarios

Dans Laravel 11, ajouter du JavaScript à votre projet peut être un jeu d'enfant, grâce à Vite, le regroupeur d'actifs par défaut. Voici comment configurer votre JavaScript pour toutes sortes de scénarios, de l'inclusion globale au chargement conditionnel dans des vues spécifiques.


1. Inclure JavaScript dans tous les fichiers

Dans de nombreux cas, vous souhaiterez peut-être inclure JavaScript globalement dans votre application Laravel. Voici comment organiser et regrouper JavaScript pour une inclusion universelle.

Étape 1 : placez votre fichier JavaScript

  1. Emplacement : stockez les fichiers JavaScript dans le répertoire resources/js. Par exemple, si votre fichier s'appelle custom.js, enregistrez-le sous resources/js/custom.js.
  2. Organiser : pour les projets complexes comportant plusieurs fichiers JavaScript, vous pouvez les organiser dans des sous-répertoires de resources/js, tels que resources/js/modules/custom.js.

Étape 2 : Compiler JavaScript avec Vite

Laravel 11 utilise Vite pour gérer les actifs. Pour le configurer pour regrouper votre JavaScript :

  1. Inclure dans app.js : Ouvrez resources/js/app.js et importez votre fichier personnalisé :
   import './custom.js';
  1. Importation directe dans les vues : Alternativement, si vous souhaitez uniquement le JavaScript dans certaines vues, vous pouvez utiliser la directive @vite dans le modèle Blade :
   @vite('resources/js/custom.js')

Étape 3 : Configurer vite.config.js

Assurez-vous que vite.config.js est configuré pour gérer correctement les importations @vite. Par défaut, cela devrait ressembler à ceci :

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/js/app.js'],
            refresh: true,
        }),
    ],
});

Étape 4 : Exécutez Vite

Pour compiler vos assets avec Vite :

  • Pour le développement : exécutez npm run dev
  • Pour la production : exécutez npm run build

Étape 5 : Charger JavaScript dans les modèles de lame

Pour inclure des fichiers JavaScript dans vos modèles, utilisez la directive @vite :

<!DOCTYPE html>
<html lang="en">
<head>
    <title>My Laravel App</title>
    @vite('resources/js/app.js')
</head>
<body>
    <!-- Content here -->
</body>
</html>

Résumé

  • Stocker les fichiers JavaScript dans resources/js.
  • Importer dans app.js pour une inclusion globale ou inclure directement dans les modèles Blade si nécessaire.
  • Compilez les actifs à l'aide de Vite.
  • Utilisez @vite dans les modèles Blade pour charger JavaScript.

Avec cette configuration, JavaScript sera disponible sur tout le site dans un projet Laravel 11.


2. Comprendre l'ordre de rendu des lames

Lors de l'inclusion conditionnelle de JavaScript dans des vues spécifiques, il est essentiel de comprendre l'ordre dans lequel les modèles Blade sont rendus.

Dans Laravel, les mises en page sont traitées en premier, suivies des vues individuelles et partielles. Voici le processus de rendu :

  1. La mise en page est rendue en premier, avec des espaces réservés (@yield et @section) créés pour l'injection de contenu.
  2. Les vues enfants ou partielles sont ensuite traitées, avec leur contenu inséré dans les espaces réservés de mise en page.

En raison de cet ordre, si vous souhaitez ajouter conditionnellement des fichiers JavaScript dans la mise en page en fonction du contenu de la vue enfant, les vérifications de variables standard ne fonctionneront pas. Vous devrez utiliser les directives @stack et @push de Blade pour une gestion plus flexible du JavaScript spécifique à la page.


3. Inclure conditionnellement JavaScript dans des vues spécifiques à l'aide de Stack et Push

Pour ajouter du JavaScript à des vues spécifiques, les directives @stack et @push de Laravel offrent une solution efficace, vous permettant d'inclure conditionnellement des scripts dans la mise en page.

Étape 1 : définissez une pile dans votre mise en page

Dans votre mise en page, créez une pile pour les scripts spécifiques à une page :

   import './custom.js';

Étape 2 : envoyer des scripts à partir des vues enfants

Dans le fichier Blade spécifique qui nécessite le JavaScript, poussez vers la pile de scripts :

   @vite('resources/js/custom.js')

Avec cette configuration, custom.js ne sera inclus que lorsque cette vue spécifique est chargée. Cette méthode fournit une solution propre qui fonctionne avec l'ordre de rendu de Laravel, garantissant que les fichiers JavaScript sont inclus de manière conditionnelle selon les besoins.


Où déclarer @push ?

Le placement des instructions @push dans une vue Blade est principalement important pour la lisibilité et l'ordre d'exécution. Voici comment utiliser @push efficacement :

  1. Placement dans la vue : bien que vous puissiez placer @push n'importe où dans une vue Blade, il est recommandé de le placer à la fin du fichier, généralement après le contenu de la @section. Cela permet de séparer le code lié au script du contenu principal, améliorant ainsi la lisibilité et la maintenabilité.
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/js/app.js'],
            refresh: true,
        }),
    ],
});
  1. Ordre de plusieurs déclarations @push : si vous avez plusieurs déclarations @push pour la même pile (par exemple, @push('scripts')), elles seront ajoutées dans l'ordre dans lequel elles apparaissent dans la vue. Par exemple:
<!DOCTYPE html>
<html lang="en">
<head>
    <title>My Laravel App</title>
    @vite('resources/js/app.js')
</head>
<body>
    <!-- Content here -->
</body>
</html>

Dans ce cas, script1.js se chargera avant script2.js car @push ajoute du contenu à la pile dans l'ordre dans lequel il est déclaré.

  1. Utilisation de @push dans les partiels et les composants : @push peut également être utilisé dans les partiels Blade (par exemple, @include) ou les composants Blade. Ceci est utile pour inclure des scripts ou des styles spécifiques à une vue directement dans des composants réutilisables, ce qui facilite la gestion des dépendances.
<!DOCTYPE html>
<html lang="en">
<head>
    <title>My Laravel App</title>
    @vite('resources/js/app.js')
    @stack('scripts') <!-- Define a stack for additional scripts -->
</head>
<body>
    @yield('content')
</body>
</html>

Lorsque ce partiel est inclus dans une vue, partial-special.js sera ajouté à la pile de scripts dans le fichier de mise en page.

  1. Contrôlez la commande avec @prepend : Si des scripts spécifiques doivent être chargés avant d'autres dans la même pile, vous pouvez utiliser @prepend au lieu de @push. @prepend place le contenu au début de la pile, permettant un meilleur contrôle sur l'ordre de chargement.
   import './custom.js';

Ici, critic.js se chargera avant non_critical.js, quel que soit leur emplacement dans le fichier Blade.

Points clés à retenir

  • Placez @push à la fin des vues pour plus de clarté et de maintenabilité.
  • L'ordre est déterminé par le placement dans la vue, les instructions @push précédentes étant chargées en premier.
  • @push fonctionne dans les partiels et les composants, ce qui facilite l'inclusion de dépendances spécifiques à une vue.
  • Utilisez @prepend pour les scripts qui doivent être chargés en premier dans la même pile.

4. Alternative : utiliser des instructions conditionnelles en ligne dans la mise en page

Si vous avez besoin d'un contrôle plus précis sur l'inclusion de JavaScript, les instructions conditionnelles de Laravel permettent une logique basée sur un itinéraire ou une variable directement dans la mise en page.

Inclure conditionnellement en fonction de l'itinéraire

Vous pouvez utiliser les vérifications d'itinéraire directement dans la mise en page pour inclure du JavaScript en fonction de l'itinéraire actuel :

   @vite('resources/js/custom.js')

Inclure conditionnellement en fonction d'une variable

Pour charger conditionnellement des scripts basés sur des variables, vous pouvez définir un indicateur dans la vue contrôleur ou enfant, puis le vérifier dans la mise en page :

  1. Dans votre contrôleur :
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/js/app.js'],
            refresh: true,
        }),
    ],
});
  1. Dans la mise en page :
<!DOCTYPE html>
<html lang="en">
<head>
    <title>My Laravel App</title>
    @vite('resources/js/app.js')
</head>
<body>
    <!-- Content here -->
</body>
</html>

Cette approche vous permet de contrôler le chargement de JavaScript en fonction de variables ou d'itinéraires spécifiques, offrant ainsi une flexibilité pour les configurations de pages personnalisées.


Résumé

Voici un bref aperçu des méthodes abordées :

  • Inclusion globale : placez JavaScript dans app.js et incluez-le globalement à l'aide de @vite.
  • Inclusion conditionnelle avec Stack et Push : utilisez les directives @stack et @push pour une gestion flexible et modulaire des scripts, qui garantit que les scripts ne sont chargés que dans les vues où ils sont nécessaires.
  • Instructions conditionnelles dans la mise en page : utilisez des vérifications basées sur les routes ou des variables de contrôleur pour charger conditionnellement JavaScript directement dans la mise en page.

Ces options vous permettent de contrôler précisément le chargement de JavaScript, rendant votre projet Laravel 11 efficace et maintenable.

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:
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