You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/docs/fr/basics/astro-components.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -73,7 +73,7 @@ Le modèle de composant se trouve sous le délimiteur de code et détermine la s
73
73
74
74
Si vous écrivez du HTML brut ici, votre composant affichera ce HTML dans n'importe quelle page Astro où il est importé et utilisé.
75
75
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.
Copy file name to clipboardExpand all lines: src/content/docs/fr/guides/client-side-scripts.mdx
+28-53Lines changed: 28 additions & 53 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,18 +7,21 @@ i18nReady: true
7
7
---
8
8
importReadMorefrom'~/components/ReadMore.astro'
9
9
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.
11
13
12
14
## Scripts côté client
13
15
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.
// 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
31
34
</script>
32
35
```
33
36
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>
41
38
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
-
```
49
39
50
40
### Traitement des scripts
51
41
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 :
58
43
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.
59
49
```astro title="src/components/Example.astro"
60
50
<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.
63
53
</script>
64
54
```
65
55
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
74
57
75
-
### Refus du traitement
58
+
Astro ne traitera pas une balise `<script>` si elle possède un attribut autre que `src`.
76
59
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.
// 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.
84
67
</script>
85
68
```
86
69
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
-
94
70
### Inclure des fichiers JavaScript dans la page
95
71
96
72
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
99
75
100
76
**Quand l'utiliser :** Si votre script se trouve dans `src/`.
101
77
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).
<!-- chemin relatif du script dans `src/scripts/local.js` -->
@@ -147,9 +123,8 @@ Au lieu de cela, vous pouvez utiliser [`addEventListener`](https://developer.moz
147
123
</script>
148
124
```
149
125
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
+
153
128
154
129
### Composants Web avec des éléments personnalisés
155
130
@@ -196,11 +171,11 @@ L'utilisation d'un élément personnalisé présente deux avantages :
196
171
197
172
### Transmettre les variables du frontmatter aux scripts
198
173
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.
200
175
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 scriptspeuvent ensuite accéder à ces valeurs grâce à la propriété `dataset`.
202
177
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.
<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>
Copy file name to clipboardExpand all lines: src/content/docs/fr/guides/view-transitions.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -522,7 +522,7 @@ Lorsque l'on navigue entre les pages avec le composant `<ClientRouter />`, les s
522
522
523
523
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.
524
524
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.
526
526
527
527
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.
0 commit comments