Skip to main content

Syntaxe

Balises spéciales

Modifier cette page sur Github

{@html ...}

{@html expression}

Dans une expression texte, les caractères < et > sont échappés ; ils ne sont en revanche pas échappés dans une expression HTML.

L'expression doit être du HTML valide en soi — {@html "<div>"}contenu{@html "</div>"} ne fonctionnera pas, car </div> n'est pas du HTML valide. Dans ce cas, Svelte ne réussira pas à compiler.

Svelte ne nettoie pas les expressions avant d'injecter le HTML. Si la donnée provient d'une source non sûre, vous devez le nettoyer vous-même pour éviter d'exposer vos utilisateurs à des vulnérabilités de type XSS.

<div class="blog-post">
	<h1>{post.title}</h1>
	{@html post.content}
</div>

{@debug ...}

{@debug}
{@debug var1, var2, ..., varN}

La balise {@debug ...} offre une alternative à console.log(...). Elle affiche les valeurs des variables spécifiées lorsqu'elle changent, et met en pause l'exécution du code si vous avez les outils de développement ouverts.

<script>
	let user = {
		firstname: 'Ada',
		lastname: 'Lovelace'
	};
</script>

{@debug user}

<h1>Hello {user.firstname}!</h1>

{@debug ...} accepte une liste de noms de variables séparés par des virgules (mais pas des expressions).

<!-- Compile -->
{@debug user}
{@debug user1, user2, user3}

<!-- Ne compile pas -->
{@debug user.firstname}
{@debug myArray[0]}
{@debug !isReady}
{@debug typeof user === 'object'}

La balise {@debug} sans argument insère une expression debugger qui est déclenchée lorsque n'importe quel état change, plutôt que certaines variables spécifiques.

{@const ...}

{@const assignment}

La balise {@const ...} définit une constante locale.

<script>
	export let boxes;
</script>

{#each boxes as box}
	{@const area = box.width * box.height}
	{box.width} * {box.height} = {area}
{/each}

{@const} est uniquement utilisable en tant qu'enfant direct de {#if}, {:else if}, {:else}, {#each}, {:then}, {:catch}, <Component /> ou <svelte:fragment />.