Skip to content

Commit a973102

Browse files
i18n(fr): update guides/client-side-scripts.mdx (#12134)
Co-authored-by: Paul Valladares <[email protected]>
1 parent 52e78d0 commit a973102

File tree

4 files changed

+31
-56
lines changed

4 files changed

+31
-56
lines changed

src/content/docs/fr/basics/astro-components.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ Le modèle de composant se trouve sous le délimiteur de code et détermine la s
7373

7474
Si vous écrivez du HTML brut ici, votre composant affichera ce HTML dans n'importe quelle page Astro où il est importé et utilisé.
7575

76-
Cependant, la [syntaxe du modèle de composant d'Astro](/fr/reference/astro-syntax/) prend également en charge les **expressions JavaScript**, les balises [`<style>`](/fr/guides/styling/#mettre-en-forme-avec-astro) et [`<script>`](/fr/guides/client-side-scripts/#utilisation-de-script-dans-astro) d'Astro, les **composants importés** et les [**directives spéciales d'Astro**](/fr/reference/directives-reference/). Les données et valeurs définies dans le script du composant peuvent être utilisées dans le modèle de composant pour produire du HTML créé dynamiquement.
76+
Cependant, la [syntaxe du modèle de composant d'Astro](/fr/reference/astro-syntax/) prend également en charge les **expressions JavaScript**, les balises [`<style>`](/fr/guides/styling/#mettre-en-forme-avec-astro) et [`<script>`](/fr/guides/client-side-scripts/) d'Astro, les **composants importés** et les [**directives spéciales d'Astro**](/fr/reference/directives-reference/). Les données et valeurs définies dans le script du composant peuvent être utilisées dans le modèle de composant pour produire du HTML créé dynamiquement.
7777

7878
```astro title="src/components/MyFavoritePokemon.astro"
7979
---

src/content/docs/fr/guides/client-side-scripts.mdx

Lines changed: 28 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,21 @@ i18nReady: true
77
---
88
import ReadMore from '~/components/ReadMore.astro'
99

10-
Vous pouvez ajouter de l'interactivité à vos composants Astro sans [utiliser un framework UI](/fr/guides/framework-components/) comme React, Svelte, Vue, etc, en utilisant les balises HTML `<script>` standard. Cela vous permet d'exécuter du JavaScript dans le navigateur et d'ajouter des fonctionnalités à vos composants Astro.
10+
Vous pouvez envoyer du JavaScript au navigateur et ajouter des fonctionnalités à vos composants Astro en utilisant les balises `<script>` dans le modèle de composant.
11+
12+
Les scripts ajoutent de l'interactivité à votre site, comme la gestion des événements ou la mise à jour du contenu de manière dynamique, sans avoir besoin d'un [framework d'interface utilisateur](/fr/guides/framework-components/) comme React, Svelte ou Vue. Cela évite les frais liés à l'envoi de JavaScript par le framework et ne nécessite aucune connaissance d'un framework supplémentaire pour créer un site web ou une application complète.
1113

1214
## Scripts côté client
1315

14-
Les scripts peuvent être utilisés pour écouter des événements, envoyer des données analytiques, jouer des animations et tout ce que JavaScript permet de faire sur le web.
16+
Les scripts peuvent être utilisés pour ajouter des écouteurs d'événements, envoyer des données analytiques, lire des animations et tout ce que JavaScript permet de faire sur le web.
17+
18+
Astro améliore automatiquement la balise HTML standard `<script>` avec le regroupement, TypeScript et plus encore. Référez-vous à [comment Astro traite les scripts](#traitement-des-scripts) pour plus de détails.
1519

16-
```astro
17-
<!-- src/components/ConfettiButton.astro -->
20+
```astro title="src/components/ConfettiButton.astro"
1821
<button data-confetti-button>Célébrer !</button>
1922
2023
<script>
21-
// Importer des modules npm.
24+
// Importer depuis le paquet npm.
2225
import confetti from 'canvas-confetti';
2326
2427
// Trouver le DOM de notre composant dans la page.
@@ -31,66 +34,39 @@ Les scripts peuvent être utilisés pour écouter des événements, envoyer des
3134
</script>
3235
```
3336

34-
Par défaut, Astro traite et regroupe les balises `<script>`, ce qui permet d'importer des modules npm, d'écrire du TypeScript, etc.
35-
36-
## Utilisation de `<script>` dans Astro
37-
38-
Dans les fichiers `.astro`, vous pouvez ajouter du JavaScript côté client en ajoutant une (ou plusieurs) balises `<script>`.
39-
40-
Dans cet exemple, l'ajout du composant `<Hello />` à un page enregistrera un message dans la console du navigateur.
37+
<ReadMore>Consultez [quand vos scripts ne seront pas traités](#scripts-non-traités) pour résoudre les problèmes de comportement des scripts ou pour savoir comment désactiver intentionnellement ce traitement.</ReadMore>
4138

42-
```astro title="src/compnonents/Hello.astro"
43-
<h1>Bienvenue, le monde !</h1>
44-
45-
<script>
46-
console.log('Bienvenue, console du navigateur !');
47-
</script>
48-
```
4939

5040
### Traitement des scripts
5141

52-
Par défaut, les balises `<script>` sont optimisées par Astro.
53-
54-
- Toutes les importations seront regroupées, ce qui vous permettra d'importer des fichiers locaux ou des modules Node.
55-
- Le script optimisé sera injecté à l'endroit où il est déclaré avec [`type="module"`](https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Modules).
56-
- TypeScript est entièrement pris en charge, y compris l'importation de fichiers TypeScript.
57-
- Si votre composant est utilisé plusieurs fois sur une page, le script ne sera inclus qu'une seule fois.
42+
Par défaut, Astro traite les balises `<script>` qui ne contiennent aucun attribut (autre que `src`) de la manière suivante :
5843

44+
- **Prise en charge de TypeScript :** Tous les scripts utilisent TypeScript par défaut.
45+
- **Regroupement des importations :** Importez des fichiers locaux ou des modules npm, qui seront regroupés.
46+
- **Type Module :** Les scripts traités utilisent [`type="module"`](https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Modules) automatiquement.
47+
- **Déduplication :** Si un composant contenant un `<script>` est utilisé plusieurs fois sur une page, le script ne sera inclus qu'une seule fois.
48+
- **Incorporation automatique :** Si le script est suffisamment petit, Astro l'intégrera directement dans le HTML pour réduire le nombre de requêtes.
5949
```astro title="src/components/Example.astro"
6050
<script>
61-
// Optimisé ! Regroupé ! Compatible avec TypeScript !
62-
// L'importation de fichiers locaux et de modules Node fonctionne.
51+
// Optimisé ! Regroupé ! TypeScript !
52+
// L'importation de scripts locaux et de paquets npm fonctionne.
6353
</script>
6454
```
6555

66-
L'attribut `type="module"` permet au navigateur de traiter le script comme un module JavaScript. Cela présente plusieurs avantages en termes de performances :
67-
- Le rendu n'est pas bloqué. Le navigateur continue de traiter le reste du code HTML pendant que le script du module et ses dépendances se chargent.
68-
- Le navigateur attend que le HTML soit traité avant d'exécuter les scripts de module. Vous n'avez pas besoin d'écouter l'événement « load ».
69-
- Les attributs `async` et `defer` ne sont pas nécessaires. Les scripts de module sont toujours différés.
70-
71-
:::note
72-
L'attribut `async` est utile pour les scripts normaux car il les empêche de bloquer le rendu. Cependant, les scripts de module ont déjà ce comportement. Ajouter `async` à un script de module le fera s'exécuter avant que la page ne soit complètement chargée. Ce n'est probablement pas ce que vous souhaitez.
73-
:::
56+
### Scripts non traités
7457

75-
### Refus du traitement
58+
Astro ne traitera pas une balise `<script>` si elle possède un attribut autre que `src`.
7659

77-
Pour empêcher Astro de traiter un script, ajoutez la directive `is:inline`.
60+
Vous pouvez ajouter la directive [`is:inline`](/fr/reference/directives-reference/#isinline) pour désactiver intentionnellement le traitement d'un script.
7861

7962
```astro title="src/components/InlineScript.astro" "is:inline"
8063
<script is:inline>
8164
// Sera rendu dans le code HTML exactement comme il est écrit !
82-
// Les importations locales ne sont pas résolues et ne fonctionneront pas.
83-
// Si le script se trouve dans un composant, il se répète chaque fois que le composant est utilisé.
65+
// Non transformé : pas de TypeScript et pas de résolution d'importation par Astro.
66+
// S'il est utilisé à l'intérieur d'un composant, ce code est dupliqué pour chaque instance.
8467
</script>
8568
```
8669

87-
:::note
88-
Astro ne traitera pas vos balises de script dans certaines situations. En particulier, l'ajout de `type="module"` ou de tout autre attribut que `src` à une balise `<script>` fera qu'Astro traitera la balise comme si elle avait une directive `is:inline`.
89-
:::
90-
91-
<ReadMore>Consultez notre page de [référence des directives](/fr/reference/directives-reference/#directives-de-script-et-de-style) pour plus d'informations sur les directives disponibles sur les balises `<script>`.</ReadMore>
92-
93-
9470
### Inclure des fichiers JavaScript dans la page
9571

9672
Vous pouvez vouloir écrire vos scripts comme des fichiers `.js`/`.ts` séparés ou avoir besoin de référencer un script externe sur un autre serveur. Vous pouvez le faire en les référençant dans l'attribut `src` d'une balise `<script>`.
@@ -99,7 +75,7 @@ Vous pouvez vouloir écrire vos scripts comme des fichiers `.js`/`.ts` séparés
9975

10076
**Quand l'utiliser :** Si votre script se trouve dans `src/`.
10177

102-
Astro compilera, optimisera et ajoutera ces scripts à la page pour vous, en suivant ses [règles de traitement des scripts](#traitement-des-scripts).
78+
Astro traitera ces scripts conformément aux [règles de traitement des scripts](#traitement-des-scripts).
10379

10480
```astro title="src/components/LocalScripts.astro"
10581
<!-- chemin relatif du script dans `src/scripts/local.js` -->
@@ -147,9 +123,8 @@ Au lieu de cela, vous pouvez utiliser [`addEventListener`](https://developer.moz
147123
</script>
148124
```
149125

150-
:::note
151-
Si vous avez plusieurs composants `<AlertButton />` sur une page, Astro n'exécutera pas le script plusieurs fois. Les scripts sont regroupés et ne sont inclus qu'une seul fois par page. L'utilisation de `querySelectorAll` garantit que ce script attache l'écouteur d'évènement à chaque bouton de la classe `alert` présent sur la page.
152-
:::
126+
Si vous avez plusieurs composants `<AlertButton />` sur une page, Astro n'exécutera pas le script plusieurs fois. Les scripts sont regroupés et ne sont inclus qu'une seule fois par page. L'utilisation de `querySelectorAll` garantit que ce script attache l'écouteur d'évènements à chaque bouton possédant la classe `alert` présent sur la page.
127+
153128

154129
### Composants Web avec des éléments personnalisés
155130

@@ -196,11 +171,11 @@ L'utilisation d'un élément personnalisé présente deux avantages :
196171

197172
### Transmettre les variables du frontmatter aux scripts
198173

199-
Dans les composants Astro, le code dans [le frontmatter](/fr/basics/astro-components/#le-script-du-composant) entre les délimiteurs `---` s'exécute sur le serveur et n'est pas disponible dans le navigateur. Pour envoyer des variables du serveur au client, nous avons besoin d'un moyen de stocker nos variables, puis de les lire lorsque le JavaScript s'exécute dans le navigateur.
174+
Dans les composants Astro, le code dans [le frontmatter](/fr/basics/astro-components/#le-script-du-composant) (entre les délimiteurs `---`) s'exécute sur le serveur et n'est pas disponible dans le navigateur.
200175

201-
Une façon d'y parvenir est d'utiliser les attributs [`data-*`](https://developer.mozilla.org/fr/docs/Learn/HTML/Howto/Use_data_attributes) pour stocker la valeur des variables dans votre sortie HTML. Les scripts, y compris les éléments personnalisés, peuvent alors lire ces attributs en utilisant la propriété `dataset` d'un élément une fois que votre HTML se charge dans le navigateur.
176+
Pour transmettre des variables côté serveur aux scripts côté client, définissez-les dans des [attributs `data-*`](https://developer.mozilla.org/fr/docs/Web/HTML/How_to/Use_data_attributes) sur les éléments HTML. Les scripts peuvent ensuite accéder à ces valeurs grâce à la propriété `dataset`.
202177

203-
Dans cet exemple de composant, une variable `message` est stockée dans un attribut `data-message`, de sorte que l'élément personnalisé puisse lire `this.dataset.message` et obtenir la valeur de la variable dans le navigateur.
178+
Dans cet exemple de composant, une propriété `message` est stockée dans un attribut `data-message`, de sorte que l'élément personnalisé puisse lire `this.dataset.message` et obtenir la valeur de la propriété dans le navigateur.
204179

205180
```astro title="src/components/AstroGreet.astro" {2} /data-message={.+}/ "this.dataset.message"
206181
---

src/content/docs/fr/guides/upgrade-to/v5.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -603,7 +603,7 @@ const { afficherAlerte } = Astro.props;
603603
}
604604
```
605605

606-
<ReadMore>En savoir plus sur [l'utilisation des balises `script` dans Astro](/fr/guides/client-side-scripts/#utilisation-de-script-dans-astro).</ReadMore>
606+
<ReadMore>En savoir plus sur [l'utilisation des balises `script` dans Astro](/fr/guides/client-side-scripts/).</ReadMore>
607607

608608
## Changements non rétrocompatibles
609609

src/content/docs/fr/guides/view-transitions.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ Lorsque l'on navigue entre les pages avec le composant `<ClientRouter />`, les s
522522

523523
Les [scripts des modules intégrés](/fr/guides/client-side-scripts/#traitement-des-scripts), qui sont les scripts par défaut dans Astro, ne sont exécutés qu'une seule fois. Après l'exécution initiale, ils seront ignorés, même si le script existe sur la nouvelle page après une transition.
524524

525-
Contrairement aux scripts de modules intégrés, les [scripts incorporés à la page](/fr/guides/client-side-scripts/#inclure-des-fichiers-javascript-dans-la-page) peuvent être réexécutés au cours de la visite d'un utilisateur sur un site s'ils se trouvent sur une page visitée plusieurs fois. Les scripts incorporés à la page peuvent également être réexécutés lorsqu'un visiteur navigue vers une page sans script, puis de nouveau vers une page avec le script.
525+
Contrairement aux scripts de modules intégrés, les [scripts incorporés à la page](/fr/guides/client-side-scripts/#scripts-non-traités) peuvent être réexécutés au cours de la visite d'un utilisateur sur un site s'ils se trouvent sur une page visitée plusieurs fois. Les scripts incorporés à la page peuvent également être réexécutés lorsqu'un visiteur navigue vers une page sans script, puis de nouveau vers une page avec le script.
526526

527527
Avec les transitions de vue, certains scripts peuvent ne plus être réexécutés après la navigation vers une nouvelle page comme c'est le cas avec les actualisations complètes du navigateur. Il existe plusieurs [événements pendant le routage côté client que vous pouvez écouter](#événements-du-cycle-de-vie) et déclencher des événements lorsqu'ils se produisent. Vous pouvez encapsuler un script existant dans un écouteur d'événements pour garantir qu'il s'exécute au bon moment dans le cycle de navigation.
528528

0 commit comments

Comments
 (0)