Construindo seu primeiro aplicativo Jamstack com Hugo e Netlify

Construir para a web é sempre uma perspectiva empolgante. Ele permite que os desenvolvedores tenham seu caminho para criar aplicativos da web. Eles podem escolher a estrutura, tecnologia, ferramentas e filosofia que desejam usar.

Uma dessas filosofias é o Jamstack. Ele oferece uma abordagem flexível para resolver o problema de desenvolvimento web.

Neste artigo, você aprenderá como criar seu primeiro aplicativo Jamstack. Vamos começar.

O que é o Jamstack?

Jamstack é uma das novas filosofias da web para construir coisas para a web. Tecnicamente, oferece aos desenvolvedores uma arquitetura da Web combinável. Você pode escolher suas estruturas e ferramentas para atingir o mesmo objetivo.

Se você olhar de perto,

Jam + pilha = JAMstack.

O Jamstack é composto por três componentes principais:

  • J para JavaScript
  • A para Interface de Programação de Aplicativos (API)
  • M para marcação

Essa abordagem separa a lógica de negócios dos dados, dissociando a camada de experiência na web. Os benefícios incluem:

  • Tempo de carregamento mais rápido (quase instantâneo).
  • Um fluxo de trabalho de desenvolvimento flexível e rápido.
  • Melhor escalabilidade e capacidade de manutenção.

Para ler mais sobre Jamstack, confira Jamstack for Newbies.

História do Jamstack

Jamstack é relativamente novo. Em 2016, Matt Biilmann apresentou o Jamstack na apresentação da empresa, mostrando ao mundo como construir um site sem seguir o caminho tradicional.

A solução separa a lógica do aplicativo da dependência do servidor back-end. Portanto, a maior parte do conteúdo é fornecida por meio de arquivos estáticos com CDNs — recursos dinâmicos suportados e acessados ​​por meio de APIs. E, se alguma ação dinâmica precisar ser processada pelo servidor, ela é compilada e enviada para CDNs, antes de ser acessada pelo usuário final.

Para entender melhor a história do Jamstack, devemos olhar para sites estáticos e dinâmicos.

  • Site estático: Um site estático é hospedado no servidor, mas não possui aspectos dinâmicos. Durante a era inicial da Internet, a maioria dos sites eram sites estáticos que serviam HTML, CSS e imagens armazenadas em um servidor. A abordagem é rápida, pois o servidor não precisa perder tempo processando a solicitação do usuário e sempre tem os arquivos prontos. No entanto, nenhuma capacidade de mudar nada leva a nenhuma interatividade.
  • Site dinâmico: os sites dinâmicos oferecem interatividade processando as solicitações dos usuários e gerando o HTML necessário para servir. A abordagem é lenta, mas adiciona os benefícios da interatividade. A maioria dos sites modernos são sites dinâmicos. O melhor exemplo seriam sites baseados em WordPress.

E, então, temos sites Jamstack. Vamos aprender como ele resolveu o problema de sites estáticos e dinâmicos.

Sites Jamstack: como eles funcionam?

O Jamstack resolve dois problemas principais:

  • Tempo de carregamento lento do site dinâmico
  • Interatividade de sites estáticos

Um site Jamstack serve arquivos estáticos, o que é rápido. Mas também contém JavaScript, que pode interagir com APIs para servir conteúdo dinâmico.

Nos bastidores, você precisará de um gerador de site estático para fazer o trabalho pesado de criar páginas da web estáticas.

Esses geradores de sites estáticos usam o Markdown para atender a sites estáticos. O gerador de site estático gera arquivos estáticos a partir dos arquivos HTML, CSS e JavaScript disponíveis. Depois de desenvolvido, o site estático é servido por meio de CDNs.

Como você está servindo arquivos estáticos, os sites são carregados quase instantaneamente. No entanto, para adicionar um aspecto dinâmico ao site, você precisa contar com o JavaScript. Os arquivos JavaScript podem se conectar a APIs e adicionar dados dinâmicos por meio da comunicação com um banco de dados.

  Como configurar um RAID de disco rígido no cofre de mídia aberto

Construindo o primeiro site Jamstack

Como o Jamtack oferece liberdade, você pode escolher qualquer estrutura Jamstack/gerador de site estático, incluindo Hugo, Gatsby, Next.js, Hexo e outros.

Leia também: Melhores Frameworks para JamStack

E para implantação, você pode implantá-lo no GitHub Pages, Netlify, Azure Static Web Apps e outros.

Usaremos Hugo para desenvolvimento Jamstack e Netlify para hospedar nosso site para este tutorial.

O tutorial pressupõe que você tenha um conhecimento básico da web. Você deve saber como a web funciona. Além disso, você também deve saber como usar o Git.

Vamos começar.

#1. Instalando pré-requisitos: Go e Git

Para instalar o Hugo, você precisa de duas coisas: Git e Go. Precisamos do Git para agilizar nosso fluxo de trabalho de construção (você o verá mais tarde com o Netlify). Go é necessário, pois Hugo é construído sobre ele.

Estamos usando o Ubuntu em execução no WSL 2 no Windows 11. Estamos acessando o kernel do Ubuntu diretamente do Windows.

Leia também: O Windows 11 encontra o Linux: um mergulho profundo nos recursos do WSL2

Você pode escolher um sistema operacional, Windows, Linux ou Mac.

Instalando o Git

No Ubuntu, você pode instalar o Git executando o seguinte comando.

$ sudo apt update

$ sudo apt install git

No caso do Windows, você precisará baixar os instaladores binários do Windows. Confira nosso guia completo de instalação do Git.

Para verificar se o Git está instalado corretamente, digite o seguinte comando.

[email protected]:~$ git --version

git version 2.34.1

Instalando Go

Agora, é hora de instalar o Golang. Para fazer isso, você precisa executar alguns comandos no Linux. Então, vamos fazer isso em etapas.

Etapa 1: remova a instalação anterior do Go e crie uma árvore Go local.

$ rm -rf /usr/local/go && tar -C /usr/local -xzf go1.20.4.linux-amd64.tar.gz

Etapa 2: Personalizando a variável de ambiente PATH

export PATH=$PATH:/usr/local/go/bi

Etapa 3: Por fim, verifique se o Golang está instalado corretamente.

$ go version.

#output
go version go1.18.1 linux/amd64

Incrível, agora estamos prontos para instalar o Hugo!

Instalando o Hugo

Dependendo se você estiver usando Homebrew ou Chocolately, você precisará usar um dos seguintes comandos.

Para Homebrew:

$ brew install hugo

Para Chocolate:

$ brew install hugo -confirm

E, se você não usa nenhum deles, pode instalá-los diretamente da fonte.

$ mkdir $HOME/src

cd $HOME/src

git clone https://github.com/gohugoio/hugo.git

cd hugo

go install  --tags extended

Para verificar se o Hugo foi instalado com sucesso, execute o seguinte comando.

$ hugo -version
Start building sites …
hugo v0.92.2+extended linux/amd64 BuildDate=2023-01-31T11:11:57Z VendorInfo=ubuntu:0.92.2-1ubuntu0.1
INFO 2023/05/05 12:20:38 syncing static files to /home/nitt/etechpt.com/public/

                   | EN
-------------------+-----
  Pages            | 35
  Paginator pages  |  0
  Non-page files   |  0
  Static files     | 23
  Processed images |  0
  Aliases          |  0
  Sitemaps         |  1
  Cleaned          |  0

Total in 117 ms

#2. Criando um site Hugo

Hugo oferece uma maneira fácil de criar um site. Para fazer isso, execute o seguinte comando.

$ hugo new site etechpt.com-jamstack
Congratulations! Your new Hugo site is created in /home/nitt/etechpt.com-jamstack.

Just a few more steps and you're ready to go:

1. Download a theme into the same-named folder.
   Choose a theme from https://themes.gohugo.io/ or
   create your own with the "hugo new theme <THEMENAME>" command.
2. Perhaps you want to add some content. You can add single files
   with "hugo new <SECTIONNAME>/<FILENAME>.<FORMAT>".
3. Start the built-in live server via "hugo server".

Visit https://gohugo.io/ for quickstart guide and full documentation.

#3. Escolhendo um tema Hugo

Hugo oferece acesso a vários temas. Esses temas fornecem um ponto de partida para o seu projeto. E, para construir um site Jamstack com Hugo, você precisa de um tema.

#4. Criando um site para pequenas empresas com Jamstack

Para o tutorial, vamos usar o Hugo Hero Theme. Este tema multifuncional oferece recursos como seções de largura total e criação de portfólio por meio do Markdown.

Para instalar o tema, copie o link do repo e clone-o. Antes de prosseguir, verifique se você está no diretório raiz.

git clone https://github.com/zerostaticthemes/hugo-hero-theme.git themes/hugo-hero-theme
#output

Cloning into 'themes/hugo-hero-theme'...

remote: Enumerating objects: 1141, done.

remote: Total 1141 (delta 0), reused 0 (delta 0), pack-reused 1141

Receiving objects: 100% (1141/1141), 28.17 MiB | 58.00 KiB/s, done.

Resolving deltas: 100% (489/489), done.

Copiando o conteúdo padrão

Para usar o conteúdo padrão com o site, execute o seguinte comando.

$ cp -a themes/hugo-hero-theme/exampleSite/. .

Ele copia o conteúdo da pasta exampleSite para a raiz do seu site.

  10 melhores ferramentas de análise de SEO na página para encontrar problemas e recomendações

Atualizando arquivo config.toml

Em seguida, precisamos editar o arquivo Config.toml. Ele armazena as informações de configuração do projeto, sendo necessário configurá-lo corretamente para que seu site Jamstack funcione.

Por enquanto, você precisa editar a linha a seguir.

baseURL = "/"

themesDir = "themes"

theme = "hugo-hero-theme"

Observação: você precisa continuar atualizando o arquivo Config.toml à medida que seu projeto avança. Além disso, como você usou o conteúdo padrão, seu Config.toml é atualizado para acomodar o conteúdo de exemplo.

Testando nosso site Jamstack

Para executar nosso site, precisamos gerar o site Hugo novamente com o comando hugo.

$ hugo

Em seguida, ativamos o servidor. Para fazer isso, execute o comando hugo serve.

$ hugo serve
#output

[email protected]:~/etechpt.com$ hugo server

port 1313 already in use, attempting to use an available port

Start building sites …

hugo v0.92.2+extended linux/amd64 BuildDate=2023-01-31T11:11:57Z VendorInfo=ubuntu:0.92.2-1ubuntu0.1

                   | EN

-------------------+-----

  Pages            | 35

  Paginator pages  |  0

  Non-page files   |  0

  Static files     | 23

  Processed images |  0

  Aliases          |  0

  Sitemaps         |  1

  Cleaned          |  0

Built in 71 ms

Watching for changes in /home/nitt/etechpt.com/{archetypes,content,data,layouts,static,themes}

Watching for config changes in /home/nitt/etechpt.com/config.toml

Environment: "development"

Serving pages from memory

Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender

Web Server is available at //localhost:42229/ (bind address 127.0.0.1)

Press Ctrl+C to stop

Observação: seu site agora está hospedado e disponível em 127.0.0.1. Se por algum motivo não estiver abrindo, tente abrir no endereço alternativo informado ao lado. Neste caso, é localhost:42973

Editando o conteúdo padrão dos temas

A partir daqui, você está livre para editar o conteúdo padrão. Você pode fazer isso indo para a pasta Conteúdo. Vamos editar o conteúdo da página de índice. Para fazer isso, vá para Conteúdo > Trabalho > Index.md

É assim que fica depois de editado.

Criando um site de blog

Você deve escolher um tema adequado se estiver apenas procurando criar um blog. Para isso, vamos usar o tema Hyde.

Semelhante à forma como configuramos nosso novo site, você precisa executar os seguintes comandos.

$ hugo new site etechpt.com-jamstack

$ cd etechpt.com-jamstack/themes

$ git clone https://github.com/spf13/hyde /themes/hyde

Em seguida, edite o arquivo Config.toml para adicionar o valor theme = ‘hyde’.

Criar uma nova postagem

Você deve executar o comando hugo new para criar uma nova postagem, seguido do arquivo Markdown.

$ hugo new hellogeekflare.md
#output

[email protected]:~/geefklare-jamstack$ hugo new hellogeekflare.md

Content "/home/nitt/geefklare-jamstack/content/hellogeekflare.md" created

[email protected]:~/geefklare-jamstack$

Editando a postagem

Para editar a postagem hellogeefklare.md recém-criada, abra o arquivo hellogeekflare.md em seu editor de texto preferido.

Ele mostrará o seguinte conteúdo.

---

title: "Hello etechpt.com"

date: 2023-05-04T11:39:10+05:30

draft: true

---

Aqui, você pode adicionar qualquer conteúdo no Markdown.

Vamos adicionar o seguinte conteúdo no Markdown.

### Hello, World!

This is a new post created to show how easy it is to create **Jamstack website**. 
We’re using Hugo and Netlify to create our *basic Jamstack site*.

Depois de colocar o conteúdo acima no arquivo .md, ele deve se parecer com o abaixo (dependendo do seu editor, estamos usando o Visual Studio Code).

No entanto, parecerá completamente diferente quando o servirmos.

Nota: Certifique-se de alterar o valor do rascunho de “verdadeiro” para “falso”

Incrível! Criamos dois sites Jamstack, um site para pequenas empresas e outro blog.

Depois de editar seu site, você pode gerar os arquivos executando o comando hugo. Ele criará o arquivo e o colocará na pasta /public.

$ hugo

#5. Implantando o site Jamstack no Netlify

Com nosso(s) site(s) criado(s), vamos implantá-los. Para isso, vamos usar o Netlify.

O Netlify é um serviço apoiado por CDN que oferece a usuários como você hospedagem de sites rápidos. Você pode conectar o Netlify ao Github e automatizar o processo. É um serviço gratuito com alguns recursos por trás do paywall.

  Como encontrar o endereço IP real (origem) do site?

Nosso trabalho é enviar o código para o Netlify e deixar que o Netlify cuide de tudo para nós.

Configurando o repositório Git localmente

Agora é hora de configurarmos o repositório Git.

Para iniciar o repositório Git, execute o seguinte comando na raiz do seu projeto.

$ git init

Em seguida, precisamos configurar o tema como um submódulo. Este é um passo importante. Tecnicamente, ele cria sub-repositórios dentro do seu repositório. (Lembre-se, você fez um git clone para o tema Hugo?). Isso lhe dará mais controle sobre seu site Jamstack.

Por exemplo, você pode baixar atualizações para seu tema. Você também precisa fazer isso porque o Netlify precisa de temas como submódulos para hospedá-los.

Portanto, para adicionar o tema como um submódulo, execute o seguinte comando.

$ git rim --cached themes/hyde

$ git submodule add https://github.com/spf13/hyde themes/hyde
#output

[email protected]:~/etechpt.com-jamstack$ git submodule add https://github.com/spf13/hyde themes/hyde

Adding existing repo at 'themes/hyde' to the index

[email protected]:~/etechpt.com-jamstack$

Criando um repositório no GitHub

Depois que a configuração local estiver concluída, é hora de criar um novo repositório GitHub.

Depois de criado, você precisa adicionar a origem ao seu repositório local.

$ git remote add origin https://github.com/logan99/etechpt.com-jamstack-tutorial.git

Agora, puxe-o.

$ git branch -M main

$ git pull origin main

Criar um novo commit

Agora, é hora de criar um novo commit. Execute o seguinte comando para adicionar todos os arquivos à ramificação principal.

$  git add .

Agora, execute o comando commit para confirmar as alterações.

$ git commit -m “First commit”
#Output

[email protected]:~/etechpt.com-jamstack$ git commit -m "First commit"

[main (root-commit) fa69ab2] First commit

 21 files changed, 1135 insertions(+)

 create mode 100644 .gitmodules

 create mode 100644 .hugo_build.lock

 create mode 100644 archetypes/default.md

 create mode 100644 config.toml

 create mode 100644 content/hellogeekflare.md

 create mode 100644 public/404.html

 create mode 100644 public/apple-touch-icon-144-precomposed.png

 create mode 100644 public/categories/index.html

 create mode 100644 public/categories/index.xml

 create mode 100644 public/css/hyde.css

 create mode 100644 public/css/poole.css

 create mode 100644 public/css/print.css

 create mode 100644 public/css/syntax.css

 create mode 100644 public/favicon.png

 create mode 100644 public/hellogeekflare/index.html

 create mode 100644 public/index.html

 create mode 100644 public/index.xml

 create mode 100644 public/sitemap.xml

 create mode 100644 public/tags/index.html

 create mode 100644 public/tags/index.xml

 create mode 160000 themes/hyde

Por fim, envie as alterações para o GitHub.

$ git push --set-upstream origin main

Observação: você deve inserir seu nome de usuário e senha do GitHub para funcionar.

#6. Trabalhando com Netlify

Excelente, nosso repositório está criado. Agora, passamos para o Netlify. Se você já possui uma conta, faça o login ou crie uma nova conta.

Para contas mais recentes, ele executará instantaneamente um assistente para você. Caso contrário, você chegará ao painel da sua conta. Se você acessar o painel, clique na opção “Adicionar novo site” em Sites.

Em Adicionar novo site, escolha “Importar um projeto existente”.

Em seguida, ele solicitará que você escolha um provedor Git. Como estamos usando o GitHub, vamos escolhê-lo. Você também pode optar por Bitbucket, GitLab e Azure DevOps.

Em seguida, listará todos os seus projetos. A partir daqui, selecione o repositório GitHub que você criou para este projeto. Para nós, é o “etechpt.com-jamstack-tutorial”. Você também pode optar por carregar o outro projeto que criamos.

Em seguida, ele solicitará que você selecione a ramificação a ser implantada e escolha as configurações básicas de compilação. Por enquanto, você pode definir tudo como padrão.

Clique em “Depoy Site” para implantá-lo.

Agora, você precisa esperar que o Netlify faça seu trabalho. Depois de implantado, a mensagem será “Seu site está implantado”.

Agora, clique no site no canto superior esquerdo.

No entanto, você notará que o site não está carregando corretamente. Isso ocorre porque a URL base no arquivo Config.toml não está definida corretamente. Como o Netlify gerou uma nova URL de projeto, você deve adicioná-la ao arquivo Config.toml.

No nosso caso, o site está em https://animated-beijinho-2baa8b.netlify.app/

Isso significa que precisamos adicionar o baseURL a ele.

Para fazer isso, vá para a configuração local e altere o valor.

baseURL = 'https://animated-beijinho-2baa8b.netlify.app/'

languageCode="en-us"

title="My new Jamstack site"

theme="hyde"

Para enviar a alteração, você precisa executar o seguinte comando.

$ git add .

$ git commit -m “changed baseURL to make it work on Netlify”

Netlify é inteligente. Quando detecta um novo commit, ele implanta automaticamente seu site novamente.

Se você carregar seu site agora, ele carregará perfeitamente.

Uau! Você fez isso. Eu sei que há muito a aprender. No entanto, você achará todo o processo intuitivo depois de fazê-lo algumas vezes.

Palavras Finais

Jamstack atraiu a nova era de desenvolvedores. Ele desbloqueia o desempenho e também melhora a forma como os sites são implantados. O Jamstack cresceu com excelentes membros do ecossistema, como Hugo e Netlify. Sem dúvida, só vai crescer a partir daqui.

A seguir, confira como implantar o aplicativo front-end no Netlify.