---
title: Markup de base
---
## Balises
Une balise en minuscules, comme `
`, indique un élément HTML standard. Une balise avec la première lettre en majuscule, comme `` ou ``, indique un _composant_.
```svelte
```
## Attributs et props
Par défaut, les attributs fonctionnent exactement comme leur équivalent HTML.
```svelte
```
Comme en HTML, les valeurs peuvent être fournies sans guillemets.
```svelte
```
Les valeurs des attributs peuvent contenir des expressions JavaScript.
```svelte
page {p}
```
Ou elles peuvent _être définies_ par des expressions JavaScript.
```svelte
```
Les attributs booléens sont inclus sur l'élément si leur valeur est [truthy](/docs/javascript#falsy-truthy-truthy) et exclus si leur valeur est [falsy](/docs/javascript#falsy-truthy-falsy).
Tous les autres attributs sont inclus à moins que leur valeur soit [nullish](/docs/javascript#nullish).
```svelte
Cette div n'a pas de titre
```
Une expression peut éventuellement inclure des caractères qui casseraient la mise en valeur de la syntaxe dans du HTML classique, en conséquence il est permis de mettre la valeur en guillemets. Les guillemets n'ont pas d'influence sur le [parsing](/docs/development#parser) de la valeur.
```svelte
```
Quand le nom d'un attribut et sa valeur sont identiques, (`name={name}`), il est possible d'écrire `{name}`.
```svelte
```
Par convention, les valeurs passées aux composants sont appelées _propriétés_ ou [_props_](/docs/sveltejs#props) plutôt qu'_attributs_, caractéristiques du [DOM](/docs/web#dom).
Comme pour les éléments, `name={name}` peut être raccourci en `{name}`.
```svelte
```
Les _attributs décomposés (spread attributes)_ permettent de passer de nombreux attributs ou propriétés d'un seul coup.
Un élément ou un composant peut avoir plusieurs attributs décomposés, parsemés ou non d'attributs classiques.
```svelte
```
La variable `$$props` référence toutes les props qui sont fournies à un composant, y compris celles qui ne sont pas déclarées avec `export`. Utiliser `$$props` ne sera pas aussi performant qu'utiliser une [prop](/docs/sveltejs#props) spécifique directement car les changements de n'importe quelle prop vont déclencher une nouvelle vérification de toutes les occurences de `$$props`. Toutefois `$$props` peut être utile dans certains cas — par exemple, lorsque vous ne savez pas à la compilation quelles props peuvent être passées au composant.
```svelte
```
La variable `$$restProps` contient uniquement les props qui ne sont _pas_ déclarées avec `export`. Elle peut être utilisée pour relayer des attributs inconnus à un élément dans un composant plus profond. `restProps` souffre des mêmes problématiques de performance que `$$props` comparé à un accès direct à une prop.
```html
```
> L'attribut `value` d'un élément `input` ou ses éléments enfants de type `option` ne doivent pas être utilisés avec des attributs décomposés lorsque `bind:group` ou `bind:checked` est utilisé. Dans ce cas, Svelte doit être capable d'accéder à la `value` de l'élément directement dans le [markup](/docs/web#markup), afin de la relier à la variable correspondante.
> Parfois, l'ordre des attributs est important car Svelte gère les attributs séquentiellement dans JavaScript. Dans l'exemple ``, Svelte va essayer d'attribuer `1` à la valeur (arrondissant 0.5 à 1 car le pas par défaut est 1), puis va mettre le pas à `0.1`. Pour régler ce problème, utilisez plutôt ``.
> Un autre exemple est ``. Svelte va essayer d'attribuer la `src` de l'image avant d'appliquer `loading="lazy"` à l'élément ``, ce qui arrive trop tard. Pour profiter du [lazy loading](/docs/web#lazy-loading), utilisez plutôt ``.
## Expressions texte
Une expression JavaScript peut être incluse en tant que texte en l'entourant avec des accolades.
```svelte
{expression}
```
Des accolades peuvent être incluses dans un [template](/docs/development#template) Svelte en utilisant leur [entité HTML](https://developer.mozilla.org/docs/Glossary/Entity) sous forme de chaîne de caractères : `{`, `{`, ou `{` pour `{` et `}`, `}`, ou `}` pour `}`.
> Si vous utilisez la [notation littérale](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#literal_notation_and_constructor) des expressions régulières (`RegExp`), vous devrez l'entourer de parenthèses.
```svelte
Bonjour {name}!
{a} + {b} = {a + b}.
{(/^[A-Za-z ]+$/).test(value) ? x : y}
```
## Commentaires
Vous pouvez utiliser des commentaires HTML à l'intérieur des composants.
```svelte
Bonjour tout le monde
```
Les commentaires qui commencent par `svelte-ignore` désactivent les avertissements du prochain bloc de [markup](/docs/web#markup). En général, ce sont des avertissements d'accessibilité ; essayez de ne les désactiver que pour une bonne raison.
```svelte
```