Guia em atualização...

Atributos

Os atributos de um elemento Html no svelte funcionam da mesma forma que em um arquivo Html comum.

Exemplo:

<button class="btn">Clique</button>

Também é possível colocar o valor do atributo sem aspas "".

<button class=btn>Clique</button>

Observação: Só vai funcionar se o valor não tiver espaço. Isso aqui não vai funcionar como você espera:

<button class=btn btn-primary>Clique</button>

A classe btn vai funcionar normalmente, mas btn-primary var ser considerado como um atributo. É como se a tag <button> tivesse um atributo btn-primary. O que não é verdade. btn-primary será considerado uma propriedade (ou prop).

Atributos x Props

Atributo é um recurso do DOM e Propriedade (ou prop) são os valores passados para um componente.

<!-- "class" é um atributo pois faz parte do DOM -->
<button class="btn">Clique</button>

<!-- "Button" é um componente e possui uma propriedade "tamanho" -->
<Button tamanho={15}>Clique</Button>

Os valores dos atributos podem ser ou conter expressões javascript.

<script>
    const disabled = true
    const page = 'pagina-de-contato'
</script>

 <!-- Esse botão ficará desabilitado pois o valor de disabled é true. -->
<button class="btn" disabled={disabled}>Clique</button>

 <!-- O atributo href desse link será "/pagina-de-contato". -->
<a href="/{page}">Clique</a>

Importante: Quando estiver lidando com aributos booleanos (exemplo: checked, disabled, readonly, required, etc…), você precisa saber que eles são incluídos na tag Html quando seu valor for truthy e removidos da tag quando o valor for falsy.

Todos os outros atributos são incluídos, exceto se o valor for null ou undefined.

 <!-- O atributo title não será incluído na div. Seu valor é nulo. -->
<div title={null}>Div</div>

Shorthand property

Se o atributo ou propriedade tiver um valor com o mesmo nome, você pode fazer isso:

<!-- App.svelte -->
<script>
    const disabled = true
</script>

<!-- Forma comum -->
<button disabled={disabled}>...</button>

<!-- Forma abreviada -->
<button {disabled}>...</button>

Spread attributes

Você pode “espalhar” os atributos dentro de um elemento.

Ao invés de fazer isso:

<button type="button" name="btn" id="btn" disabled>Clique</button>

Você pode fazer isso:

<!-- App.svelte -->
<script>
    const attributes = {
        type: "button",
        name: "btn",
        id: "btn",
        disabled: true
    }
</script>

<button {...attributes}>Clique</button>

Olhando o código acima, você tem a certeza que escreveu mais código para fazer a mesma coisa. É verdade! Mas a medida que seu código cresce, isso pode melhorar a legibilidade. Deixa seu código Html mais “limpo”.

Você também pode colocar vários “spread attributes”.

<!-- App.svelte -->
<script>
    const defaultAttributes = {
        type: "button",
        name: "btn",
        id: "btn",
        disabled: true
    }

    const otherAttributes = {
        autofocus: true,
        class: 'btn btn-primary'
    }
</script>

<button {...defaultAttributes} {...otherAttributes}>Clique</button>