Svelte 5 é oficialmente lançado!

34d atrás

0 0

A versão 5 do framework Svelte acabou de ser liberada no dia 19/10/2024, e trás diversas novidades e melhorias.

As principais novidades são:

  • Ainda mais melhorias de performance
  • Um sistema de reatividade mais granular com runas
  • Sintaxe do template mais expressiva com snippets e event attributes
  • Suporte ao TypeScript nativamente
  • Compatibilidade com a sintaxe anterior, para você continuar usando-a, se preferir

Runas

O novo sistema de reatividade é umas maiores mudanças dessa versão, runes, como é chamado, é um sistema reativo mais granular, e que funciona além dos arquivos .svelte, podendo ser usado universalmente no seu projeto.

No Svelte 4 variáveis criadas no escopo principal do componente era reativa por padrão:

let count = 0;
Já no Svelte 5, para criar uma variável reativa no template, utilize o seguinte código:
let count = $state(0);

Para observar mudanças nessa variável, você usaria o seguinte código no Svelte 4:

$: double = count * 2;
Já na nova versão temos as runas $derived e $effect para isso:
const double = $derived(count * 2);

As propriedades de um componente eram definidas com export let:

export let required;
export let type;
E agora são definidas com a runa $props:
let { required, type } = $props();

Eventos

Outra grande mudança é que agora eventos são atributos, antes eram diretivas, iniciadas com on:

<button on:click={() => count++}>clicks: {count}</button>
Agora eles são apenas propriedades:
<button onclick={() => count++}>clicks: {count}</button>
Tem diversas outras novidades na parte de eventos, agora você pode passar callbacks como propriedades em componentes, foram removidos os modificadores de eventos, agora você deve implementar eles direto no handler manualmente etc.

Snippets

Agora você pode criar trechos de template reutilizáveis, por exemplo:

{#snippet user(data)}
	<img alt={`Foto do ${data.name}`} src={data.photo}>
	<p>{data.name}</p>
{/snippet}
Para usar esse snippet é só renderizar ele em qualquer parte do template com a tag render:
{@render user(userData)}

Há muitas outras novidades e melhorias, confira na nova documentação do Svelte:

Overview • Docs • Svelte

svelte.dev

E no guia de migração para a versão 5:

Svelte 5 migration guide • Docs • Svelte

svelte.dev


Comentários (0)

0/512
Link