"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Dane-se! Desenvolvi meu próprio gerador de sites estáticos!

Dane-se! Desenvolvi meu próprio gerador de sites estáticos!

Publicado em 2024-08-29
Navegar:932

O desenvolvimento Web hoje em dia tornou-se muito complicado graças aos criadores de milhares de novas maneiras de fazer a mesma coisa. Nos primeiros dias do desenvolvimento web ele tinha PHP e jQuery que faziam praticamente tudo que precisávamos. Mas bem, as coisas mudaram agora.

Longa história curta

Então, eu estava procurando uma maneira de construir meu site pessoal. Que teria alguns blogs e a vitrine do meu projeto, é isso, não é grande coisa, certo? Bem, embora a mesma coisa também. Então, meu pensamento inicial foi usá-los como minha pilha de tecnologia

  • Reagir
  • Firebase/Supabase
  • CSS do Tailwind
  • Páginas Cloudflare para implantação

Bem, este poderia ser o final feliz, mas... ?

Como já afirmei, vou precisar de uma seção de blog e, ironicamente, blogs e reações não combinam bem. Já que o React é basicamente para construir WebApps e não sites orientados a conteúdo. Agora quem não sabe o porquê aqui vai um resumo do chatGPT

Por que o React não é adequado para sites orientados a conteúdo

ChatGPT disse,

O React não é ideal para sites orientados a conteúdo, principalmente porque depende da renderização do lado do cliente, o que pode impactar negativamente o SEO e os tempos de carregamento inicial da página. Sites orientados a conteúdo se beneficiam da renderização do lado do servidor (SSR) ou da geração de site estático (SSG), que o React não suporta imediatamente. Ferramentas como Next.js ou Gatsby, que estendem o React, são mais adequadas para essas necessidades.

Próximo alvo: NextJs

Bem, é óbvio que preciso de SSR para o blog, pois queria uma boa indexação pelos mecanismos de busca e visualizações profissionais de links de mídia social. NextJs poderia me dar os dois, mas ainda há um problema, e é meio pessoal.

Veja, eu sempre adorei usar páginas cloudflare e queria continuar com isso, além disso, queria que o roteamento gratuito de e-mail do cloudflare tivesse um endereço de e-mail personalizado anexado ao meu domínio, reduzindo assim o custo.

NextJS na Cloudflare

Tentei implantar o site nextJS em páginas cloudflare por meio de sua documentação oficial. Bem, as coisas não correram bem. Não consegui implantar lá, tentei horas procurando uma solução e nada funcionou. Digamos apenas que nextJS e cloudflare não combinaram bem para mim. Então, se alguém da Vercel ou Cloudflare estiver lendo isso, corrija-me se estiver faltando alguma coisa.

Bem, neste ponto eu estava desesperado e a última opção que tinha era SSG.

Próxima solução: SSG

Agora o SSG é bom e eu entendo a importância aqui. O problema é que nunca trabalhei com SSG antes e existem várias rotas de passagem. Existem coisas como Hugo, Gatsby, Astro blá blá. E provavelmente mais. Agora eu não estava familiarizado com nenhum deles e naquele momento estava tão frustrado que não estava disposto a investir um pouco no aprendizado de uma nova ferramenta para um aplicativo de blog simples. Então eu pensei: foda-se, farei minhas próprias coisas.

Criando meu próprio gerador de site estático.

Alguns pontos pelos quais decidi desenvolver meu próprio gerador de site estático

    Fiquei frustrado (claro haha)
  1. Como estou criando minha própria ferramenta, terei controle total sobre como as páginas serão geradas. Como eles serão.
  2. Gosto de reinventar.
  3. Eu tinha tempo livre para gastar.
O Plano

O plano era uma maneira antiquada de criar um site. Artigos separados terão suas próprias páginas HTML.

Aqui está o resumo completo:

    Estarei escrevendo em arquivos Palin Markdown
  1. Use python para analisar a redução em HTML simples
  2. Já terei um modelo onde diferentes seções serão injetadas dinamicamente.
  3. Também terei um arquivo de configuração correspondente ao artigo. Então a hierarquia de arquivos ficará assim
artigos/ ├── arte-1 │   ├── arte.md │   └── config.json ├── arte-2 │   ├── arte.md │   └── config.json ├── arte-3 │   ├── arte.md │   └── config.json └── arte-4 ├── arte.md └──config.json
articles/
├── art-1
│   ├── art.md
│   └── config.json
├── art-2
│   ├── art.md
│   └── config.json
├── art-3
│   ├── art.md
│   └── config.json
└── art-4
    ├── art.md
    └── config.json

Portanto, cada postagem terá sua própria pasta e a pasta terá config.json e art.md . O script python pegará o template.html e inserirá conteúdo dinâmico nesse modelo HTML, por exemplo, o título da postagem, slug, miniaturas do arquivo de configuração e artigo principal do arquivo markdown analisado. Mais importante ainda, ele irá gerar meta tags dinamicamente para SEO e mídias sociais. Depois, ele irá gravar as alterações em um arquivo chamado art/.html para que o link da postagem seja example.com/art/slug.

Como foi integrado?

Bem, desenvolvi uma interface CLI para interagir com o gerador. Eu o chamei de

fit você sabe como em F it. Possui os seguintes comandos ou opções:

$ ./fit --help fit: também conhecido como sistema de construção foda-se Um sistema de construção para meu site pessoal desenvolvido por Shazin USO fit COMANDOS init Cria um novo modelo de postagem em articles/art-[n] build art- Constrói o artigo especificado sincronizar Sincroniza o índice global de artigos com a página inicial uploader Inicia o uploader de imagens GTK GUI upload Faz upload do arquivo especificado para o firebase implantar Implanta alterações locais no repositório remoto help, -h, --help Exibe este menu de ajuda
articles/
├── art-1
│   ├── art.md
│   └── config.json
├── art-2
│   ├── art.md
│   └── config.json
├── art-3
│   ├── art.md
│   └── config.json
└── art-4
    ├── art.md
    └── config.json

Mecanismo de implantação

Então, como eu disse, queria usar as páginas Cloudflare para implantação. Basicamente, o que fiz foi criar um branch chamado prod e sempre que o comando ./fit deploy for executado, ele basicamente copiará todos os arquivos necessários para o branch prod e enviará as alterações para o github. Em seguida, o cloudflare criará e reimplantará automaticamente as alterações.

Entregando imagens

Para lidar com imagens ou quaisquer arquivos estáticos que usei o armazenamento do Firebase, o uploader ./fit abrirá um uploader GUI baseado em GTK do qual posso fazer upload de uma imagem e me fornecerá o URL público que posso do que copie, veja como fica:

Interface de upload

Screw it! I

Interface de pós-upload

Screw it! I

Interface CLI

Há também uma interface CLI que pode ser usada por ./fit upload

Screw it! I

Fundo Ambiental Dinâmico

Então, pensei que, quando sou eu quem cuida de toda a construção e geração, posso definitivamente fazer algumas coisas legais com ele, então adicionei um fundo ambiente colorido dinâmico a cada postagem. A ideia era escolher uma cor média da imagem em miniatura e depois escurecê-la e usá-la como plano de fundo. Também escolhi uma cor primária para os links e botões da imagem em miniatura e, honestamente, para mim, parece muito legal, aqui está uma captura de tela

Screw it! I

Comentários e discussão

Como eu estava trabalhando basicamente sem nenhum banco de dados ou nenhum serviço de back-end, tive que escolher um serviço externo para isso e o que mais faz isso melhor do que o Disqus.

Valeu a pena?

Bem, para ser honesto, como eu disse, estava passando alguns momentos livres, então sim, definitivamente valeu a pena, e não demorei muito para ser honesto. Passei de 2 a 3 dias neste projeto completo e realmente me diverti criando algo criativo.

Concluindo

Então, tive uma experiência muito divertida com este projeto e espero fazer mais melhorias e adicionar mais funcionalidades a ele. No momento é tão básico e simples que era o que eu queria. Se você gosta deste projeto ou deseja que eu o abra, por favor me avise. Ah, e aqui está o link do site que eu estava gritando sobre shazin.me Obrigado pela leitura.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/shazin/screw-it-ive-developed-my-own-static-site-generator-27cd?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3