Svelte é um framework de desenvolvimento de interfaces de usuário (UI) que se destaca por uma abordagem inovadora de compilação. Diferente de outros frameworks como React ou Vue, que utilizam o Virtual DOM e executam a renderização no navegador, o Svelte faz o trabalho pesado durante a compilação do código, gerando JavaScript otimizado e independente de reatividade que roda diretamente no navegador.
A principal ideia por trás do Svelte é melhorar o desempenho das aplicações e simplificar a arquitetura, eliminando a necessidade de um framework no runtime, ou seja, o código resultante de uma aplicação Svelte é mais enxuto e rápido, uma vez que não carrega o peso de uma biblioteca auxiliar.
setState
em React..svelte
que contém HTML, CSS e JavaScript em um único arquivo, proporcionando uma experiência de desenvolvimento coesa.Aqui está um exemplo básico de um componente Svelte:
<script>
let count = 0;
function increment() {
count += 1;
}
</script>
<style>
button {
font-size: 1.5em;
margin-top: 10px;
}
</style>
<h1>Contador: {count}</h1>
<button on:click={increment}>Incrementar</button>
Runas são símbolos que você usa em arquivos .svelte para controlar o compilador Svelte.
As runas têm um $
como prefixo e se parecem com funções:
let message = $state('hello');
O $state permite que você crie um estado reativo, o que significa que sua IU reage quando a variável muda.
<script>
let count = $state(0);
</script>
<button onclick={() => count++}>
clicks: {count}
</button>
Usado para acompanhar um outro state
<script>
let count = $state(0);
let doubled = $derived(count * 2);
</script>
<button onclick={() => count++}>
Incrementar
</button>
<p>Contador: {count}</p>
<p>O dobro do contador: {doubled}</p>
Basicamente tudo do aplicativo svelte é um $effect e são criados de maneira automática, mas também é possivel criar efeitos por conta própria se necessário.
Usado para dar entradas em componentes.
// MyComponent.svelte
<script>
import MyComponent from './MyComponent.svelte';
</script>
<MyComponent adjective="cool" />
Recuperando os dados MyComponent.svelte
<script>
let props = $props();
</script>
<p>this component is {props.adjective}</p>
Funciona de maneira agregada ao $props, serve para acessar valores de pai pra filho.
Funciona como um console.log, que é executado toda vez que a variável sofre uma alteração.
O Svelte permite construir componentes usando condicionais, uso de variáveis e métodos dentro do próprio template.
{#if temperature > 30}
<p>Muito quente!</p>
{:else if temperature < 10}
<p>Muito frio!</p>
{:else}
<p>Perfeito!</p>
{/if}
{#await promise}
<p>Aguardando promise...</p>
{:then value}
<!-- Promise resolvida -->
<p>The value is {value}</p>
{:catch error}
<!-- Promisse rejeitada -->
<p>Something went wrong: {error.message}</p>
{/await}
O Svelte é uma opção poderosa para desenvolvimento front-end moderno, proporcionando uma experiência leve e reativa com código mais limpo e de fácil manutenção. Por outro lado, para construções de aplicações maiores, o Svelte pode não ser a melhor opção, pois pode tornar o código muito confuso e de difícil manutenção.