Vue.js cresceu em popularidade nos últimos dois anos, com quase 180.000 estrelas no GitHub no momento da escrita. Essa adoção cada vez maior compeliu os desenvolvedores em todo o mundo a construir uma miríade de ferramentas e estruturas em torno do Vue.js, incluindo Nuxt.js e Gridsome.
Neste guia, compararemos Gridsome vs. Nuxt.js, duas estruturas construídas em Vue.js que você pode usar para construir aplicativos JAMstack rápidos. Avaliaremos cada um em termos de experiência do desenvolvedor, uso geral e práticas recomendadas, estrutura e adoção pela comunidade. Para mostrar como o Nuxt.js e o Gridsome funcionam, criaremos um blog de exemplo com os dois frameworks.
Aqui está o que vamos cobrir:
- O que é Gridsome?
- O que é Nuxt.js?
- Exemplo de grade
- Exemplo de Nuxt.js
- Gridsome vs. Nuxt.js: Qual é melhor?
Para acompanhar esta comparação e tutorial Gridsome vs. Nuxt, você deve ter o seguinte:
- Node >=v8.3 e NPM instalados
- Gerenciador de pacotes Yarn instalado:
npm install-g yarn
(Gridsome recomenda usar Yarn) - Conhecimento básico de JavaScript
- Conhecimento básico de Vue.js
- Gridsome CLI instalado:
npm install-g @ gridsome/cli
. - Conhecimento de GraphQL (não obrigatório)
- Conhecimento básico da linha de comando
O que é Gridsome?
Gridsome é um gerador de site estático baseado em dados que gera arquivos HTML a partir de arquivos locais, CMSs e APIs externas. Os arquivos HTML são inicialmente carregados no navegador como arquivos estáticos e, em seguida, hidratados em aplicativos Vue.js. Isso melhora o SEO e, ao mesmo tempo, oferece todos os benefícios do Vue. Os dados são pré-buscados e armazenados em uma camada de dados GraphQL.
Esta é uma visão geral da estrutura de diretórios do Gridsome .
O que é Nuxt.js?
Nuxt.js é uma estrutura Vue.js muito poderosa que permite construir aplicativos da web modernos da maneira que você escolher. O Nuxt.js oferece a flexibilidade de criar aplicativos da web como página única, renderização do lado do servidor ou gerados estaticamente.
Verifique a documentação do Nuxt.js para obter uma visão geral da estrutura de diretório Nuxt .
Exemplo de grade: Construindo um aplicativo de blog
Para mostrar como o Gridsome funciona-e estabelecer um quadro de referência para comparar com o Nuxt.js-vamos explorar como construir um blog com o Gridsome.
Para criar um novo projeto Gridsome, execute:
gridsome criar meu-gridsome-blog
Abra a pasta recém-criada em seu editor de código e execute gridsome developers
para iniciar o servidor de desenvolvimento.
Em seu navegador, abra http://localhost: 8080
e você verá seu incrível-embora inacabado-blog.
Construindo uma IU no Gridsome
O diretório /src
é onde você trabalhará com os arquivos .vue
. Começando com o diretório /pages
, cada arquivo .vue
no diretório se torna uma página no navegador, então o conteúdo de About.vue
esteja em /about
no navegador.
Existem duas maneiras de criar páginas no Gridsome: você pode construir páginas baseadas em arquivo com os arquivos .vue
ou você pode usar o API de páginas (mais sobre isso mais tarde).
Cole o snippet de código abaixo dentro do componente
em /pages/index.vue
para substituir o conteúdo inicial.
Bem-vindo meu blog incrível
Eu amo o Vue.js, então escrevo sobre ele.
Novos artigos
Antes de prosseguirmos, você precisará importar o CSS para o blog globalmente. Crie um arquivo usando esta estrutura de diretório:
/src/assets/css/main.css
Cole o conteúdo este Gist no principal. arquivo css
e importe-o no topo do arquivo main.js
, que está na raiz do diretório /src
:
import'~/assets/css/main.css`
O arquivo main.js
é usado para importar estilos e scripts globais. Você também notará que temos acesso à instância do Vue na função exportada, podemos usar isso para instalar o Vue. plug-ins js, registre componentes globais (assim como o componente de layout padrão) e diretivas.
Gerando conteúdo de blog
O Gridsome também tem vários pacotes reutilizáveis chamados plug-ins . Esses plug-ins podem ser usados para implementar algumas funcionalidades personalizadas em seus aplicativos. Existem mais de 180 plug-ins listados atualmente na página de plug-ins do Gridsome.
Usaremos o plugin @ gridsome/source-filesystem
para transformar o conteúdo que escrevemos em markdown e carregá-lo em uma camada GraphQL para que possamos consultar nossos componentes.
O plug-in também requer @ gridsome/transformer-note
para trabalhar com arquivos markdown.
Para instalar o plugin de origem do sistema de arquivos:
yarn add @ gridsome/source-filesystem
Para instalar o transformador:
yarn add--dev @ gridsome/transformador-observação
Para configurar o plug-in, modifique o arquivo gridsome.config.js
para ficar assim:
module.exports={ nome do site:'Gridsome', plugins: [ { use:'@ gridsome/source-filesystem', opções: { typeName:'BlogPost', caminho:'./blog/**/*.md', }, }, ], modelos: { BlogPost:'/blog/: título', }, };
O arquivo gridsome.config.js
é onde registramos os plug-ins Gridsome e configuramos o projeto:
-
typeName
nas opções do plugin é o nome que damos à coleção GraphQL para nossas postagens de blog e modelo (um preenchimento.vue
que criamos momentaneamente em/src/templates
) -
path
é onde o plug-in deve procurar por arquivos markdown para gerar conteúdo -
templates
é o objeto que define como devem ser as rotas para arquivos de modelo;: title
, neste caso, é o título da postagem do blog, que é dinâmico.
Crie uma pasta blog
na raiz do projeto, adicione um arquivo markdown, hello.md
e cole o conteúdo abaixo:
--- título: Hello World descrição: Este é o primeiro artigo do meu blog incrível data: 2021-01-14 publicado: verdadeiro --- # A h1 header ============ Os parágrafos são separados por uma linha em branco. 2o parágrafo. * Itálico *, ** negrito ** e `monoespaço`. Listas detalhadas parece: * Este * Aquele * o outro Observe que---sem considerar o asterisco---o texto real o conteúdo começa em 4 colunas. > As citações em bloco são > escrito assim. ## Um cabeçalho h2 ------------ Aqui está uma lista numerada: 1. primeiro item 2. segundo item 3. terceiro item `` `js //ciclo para (i=0; i <=4; i ++) { console.log (i) } `` `
A seguir, crie um arquivo BlogPost.vue
em /src/templates
. Este arquivo é responsável por renderizar os dados da coleção GraphQL que possui o tipo BlogPost
, que é o mesmo nome que definimos no arquivo gridsome.config.js
. O valor de typeName
em gridsome.config.js
deve corresponder ao arquivo criado em /src/templates
.
Reinicie seu servidor e abra http://localhost: 8080/___ explore
em seu navegador. Você deverá ver um playground GraphQL .
Cole a consulta abaixo na guia esquerda e clique no botão “reproduzir”.
query { allBlogPost (filtro: {publicado: {eq: verdadeiro}}) { arestas { nó { caminho, título, data (formato:"DD MMM AAAA"), tempo para ler, contente, } } } }
A consulta acima busca todos os dados associados ao tipo BlogPost
e filtra por aqueles que têm publicado
definido como true
.
Listando postagens de blog
Agora que temos conteúdo, é hora de exibi-lo.
Atualize o arquivo index.vue
em /src/pages
com os trechos de código abaixo.
Adicione a consulta abaixo antes da tag