Executando verificação de segurança...
3

Vike: Uma alternativa ao Next.js

Há muito tempo venho criando sites utilizando Next.js, e há algum tempo atrás eu participei em um projeto onde se utilizava React com Vite (porem sem o SSR). Utilizando as mesmas bibliotecas front-end que eu utilizava com o Next.js, eu percebi que o tempo de build com o Vite era muito menor do que usando o Next.js, então decidi buscar alternativas com Server Side Rendering mais rápidas do que o Next.js para criar sites em React.

Rapidamente encontrei nesta postagem do Reddit comentários sugerindo o vite-plugin-ssr, que mudou seu nome para Vike.

Logo do Vike

Eu testei ele e fiquei impressionado como o Vike é incrível. Aqui estão alguns pontos que gostei:

Suporte a variados frameworks

Ele suporta vários frameworks além do React, como Vue.js, Svelte, Solid. Neste link há uma comparação entre o Vike e o Next.js.

Data fetching

O Vike utiliza hooks para acessar os dados retornados do servidor, ao invés deles serem passados por props como no Next.js, facilitando o acesso aos dados pelos componentes.

// /pages/products/+data.ts

export async function data(pageContext) {
  const products = await fetchProducts()
  return { products }
}

export type Products = Awaited<ReturnType<typeof data>>
// /components/products/list.ts

import { useData } from 'vike-react/useData'
import type { Products } from '../../pages/products/+data'

export function ProductList() {
  const { products } = useData<Products>()
}

Tags <a> funcionam com o client-side routing

Ele não precisa de um componente externo como o <Link> do Next.js para alternar as páginas sem recarregar, pode ser usado as tags <a>.

// Next.js
<Link href="/">Link</Link>

// Vike
<a href="/">Link</a>

Hooks

O Vike possui vários hooks para manipular rotas. Por exemplo, o guard() permite proteger páginas contra acesso não autorizado, onBeforeRender() pode ser útil para buscar dados do servidor antes de renderizar cada página (como dados de um usuário autenticado, por exemplo).

Organização de arquivos

Ele possui arquivos separados para funções específicas das páginas, como +Layout.tsx para criação de layouts, +Head.tsx para definir os metadados da página (muito útil para SEO), +Wrapper.tsx para os providers, +title para definir o título da página, +data para obter dados do servidor, entre outros.

Rápido

Enquanto eu utilizava, percebi que o HMR dele é um pouco mais rápido que o Next.js. Eu criei um mesmo projeto básico com Chakra UI utilizando o Vike e o Next.js e medi o tempo de build e o máximo de RAM utilizado, através da ferramenta "time" do Linux. Os resultados foram os seguintes:

FrameworkTempo de buildMáximo de RAM durante o build
Next.js72.56s825.7MB
Vike15.8s419.4MB

Além desses há muitos outros recursos, que podem ser encontrados no site
https://vike.dev/

Gostaria de saber se alguém já utilizou o Vike, e qual foi sua experiência 😉

Carregando publicação patrocinada...
1

Faltou talvez alguns cases em Produção, na página oficial até apresentam uns ,porém ainda há o fator do Next ter por trás a Vercel que o populariza.

1

Estava lendo a página de comparação, e me pareceu que ela não é feita com as versões mais recentes do Next, confesso que tenho usado pouco Next no momento, mas me parece que agora com o Turbopack ele acaba sendo superior ao Vike.
Vou tentar fazer alguns testes, mas acredito que por todo histórico do Next e pela comunidade não seria muito interessante trocar ele pelo Vike(Talvez para projetos onde só você vai atuar).