Creați-vă prima aplicație Jamstack cu Hugo și Netly

Construirea pentru web este întotdeauna o perspectivă interesantă. Le permite dezvoltatorilor să aibă calea lor pentru a construi aplicații web. Ei pot alege cadrul, tehnologia, instrumentele și filosofia pe care doresc să le folosească.

O astfel de filozofie este Jamstack. Oferă o abordare flexibilă pentru rezolvarea problemei dezvoltării web.

În acest articol, veți învăța cum să vă creați prima aplicație Jamstack. Să începem.

Ce este Jamstack?

Jamstack este una dintre noile filozofii web pentru a construi lucruri pentru web. Din punct de vedere tehnic, oferă dezvoltatorilor o arhitectură web componabilă. Vă puteți alege cadrele și instrumentele pentru a realiza același obiectiv.

Dacă te uiți cu atenție,

Jam + stivă = JAMstack.

Jamstack este format din trei componente principale:

  • J pentru JavaScript
  • A pentru interfața de programare a aplicațiilor (API)
  • M pentru Markup

Această abordare separă logica afacerii de date, decuplând nivelul de experiență web. Beneficiile includ:

  • Timp de încărcare mai rapid (aproape instantaneu).
  • Un flux de lucru de dezvoltare flexibil și rapid.
  • Scalabilitate și întreținere îmbunătățite.

Pentru a citi mai multe despre Jamstack, consultați Jamstack pentru începători.

Istoria Jamstack

Jamstack este relativ nou. În 2016, Matt Biilmann a introdus Jamstack în prezentarea companiei, arătând lumii cum să construiască un site web fără a merge pe calea tradițională.

Soluția separă logica aplicației de dependența de serverul backend. Deci, majoritatea conținutului este difuzat prin fișiere statice cu CDN-uri – caracteristici dinamice acceptate și accesate prin intermediul API-urilor. Și, dacă orice acțiune dinamică trebuie procesată de către server, aceasta este compilată și trimisă către CDN-uri, înainte de a fi accesată de utilizatorul final.

Pentru a înțelege mai bine istoria Jamstack, trebuie să ne uităm la site-urile web statice și dinamice.

  • Site static: Un site web static este găzduit pe server, dar nu are aspecte dinamice. În timpul erei inițiale a Internetului, majoritatea site-urilor erau site-uri web statice care au servit HTML, CSS și imagini stocate pe un server. Abordarea este rapidă, deoarece serverul nu trebuie să petreacă timp procesând cererea utilizatorului și are întotdeauna fișierele pregătite. Cu toate acestea, nicio capacitate de a schimba ceva nu duce la interactivitate.
  • Site web dinamic: site-urile dinamice oferă interactivitate prin procesarea solicitărilor utilizatorilor și generând codul HTML necesar pentru a fi difuzat. Abordarea este lentă, dar adaugă beneficiile interactivității. Cele mai multe site-uri moderne sunt site-uri dinamice. Cel mai bun exemplu ar fi site-urile web bazate pe WordPress.

Și, apoi, avem site-uri web Jamstack. Să aflăm cum a rezolvat problema atât a site-urilor statice, cât și a celor dinamice.

Site-uri web Jamstack: Cum funcționează?

Jamstack rezolvă două probleme de bază:

  • Timpul de încărcare lent al site-ului dinamic
  • Interactivitatea site-urilor statice

Un site Jamstack servește fișiere statice, ceea ce este rapid. Dar conține și JavaScript, care poate interacționa cu API-urile pentru a difuza conținut dinamic.

În culise, veți avea nevoie de un generator de site-uri static pentru a face munca grea de a crea pagini web statice.

Acești generatori de site-uri statice folosesc Markdown pentru a servi site-uri web statice. Generatorul de site-uri static generează fișiere statice din fișierele HTML, CSS și JavaScript disponibile. Odată dezvoltat, site-ul static este apoi servit prin CDN-uri.

Pe măsură ce difuzați fișiere statice, site-urile sunt încărcate aproape instantaneu. Cu toate acestea, pentru a adăuga un aspect dinamic site-ului, trebuie să vă bazați pe JavaScript. Fișierele JavaScript se pot conecta la API-uri și pot adăuga date dinamice comunicând cu o bază de date.

  Crește-ți scorul cu aceste 10 teste de practică GMAT

Construirea primului site web Jamstack

Deoarece Jamtack oferă libertate, puteți alege orice cadru Jamstack/generator de site static, inclusiv Hugo, Gatsby, Next.js, Hexo și alții.

Citește și: Cele mai bune cadre pentru JamStack

Și pentru implementare, îl puteți implementa în GitHub Pages, Netlify, Azure Static Web Apps și altele.

Vom folosi Hugo pentru dezvoltarea Jamstack și Netlify pentru a găzdui site-ul nostru pentru acest tutorial.

Tutorialul presupune că aveți o înțelegere de bază a web-ului. Trebuie să știi cum funcționează web-ul. În plus, ar trebui să știi și cum să folosești Git.

Să începem.

#1. Instalarea Cerințe preliminare: Go și Git

Pentru a instala Hugo, aveți nevoie de două lucruri: Git și Go. Avem nevoie de Git pentru a ne simplifica fluxul de lucru (veți vedea mai târziu cu Netlify). Go este necesar, deoarece Hugo este construit pe el.

Folosim Ubuntu care rulează pe WSL 2 pe Windows 11. Accesăm nucleul Ubuntu direct din Windows.

Citește și: Windows 11 întâlnește Linux: o scufundare profundă în capabilitățile WSL2

Puteți alege un sistem de operare, Windows, Linux sau Mac.

Instalarea Git

În Ubuntu, puteți instala Git rulând următoarea comandă.

$ sudo apt update

$ sudo apt install git

În cazul Windows, va trebui să descărcați programe de instalare binare Windows. Consultați ghidul nostru complet de instalare Git.

Pentru a verifica dacă Git este instalat corect, tastați următoarea comandă.

[email protected]:~$ git --version

git version 2.34.1

Instalarea Go

Acum, este timpul să instalați Golang. Pentru a face acest lucru, trebuie să rulați câteva comenzi pe Linux. Deci hai să o facem în pași.

Pasul 1: Eliminați instalarea Go anterioară și creați un arbore Go local.

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

Pasul 2: Personalizarea variabilei de mediu PATH

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

Pasul 3: În cele din urmă, verificați dacă Golang este instalat corect.

$ go version.

#output
go version go1.18.1 linux/amd64

Minunat, acum suntem gata să instalăm Hugo!

Instalarea lui Hugo

În funcție de dacă utilizați Homebrew sau Chocolately, va trebui să utilizați una dintre următoarele comenzi.

Pentru Homebrew:

$ brew install hugo

Pentru Chocolatey:

$ brew install hugo -confirm

Și, dacă nu folosiți niciuna dintre ele, le puteți instala direct din sursă.

$ mkdir $HOME/src

cd $HOME/src

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

cd hugo

go install  --tags extended

Pentru a verifica dacă Hugo este instalat cu succes, rulați următoarea comandă.

$ 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/tipstrick.ro/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. Crearea unui site Hugo

Hugo oferă o modalitate simplă de a crea un site. Pentru a face acest lucru, executați următoarea comandă.

$ hugo new site tipstrick.ro-jamstack
Congratulations! Your new Hugo site is created in /home/nitt/tipstrick.ro-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. Alegerea unei teme Hugo

Hugo oferă acces la o mulțime de teme. Aceste teme oferă un punct de plecare pentru proiectul dvs. Și, pentru a construi un site Jamstack cu Hugo, aveți nevoie de o temă.

#4. Crearea unui site de afaceri mici cu Jamstack

Pentru tutorial, vom folosi tema Hugo Hero. Această temă multifuncțională oferă funcții precum secțiuni cu lățime completă și crearea de portofoliu prin Markdown.

Pentru a instala tema, copiați linkul său de depozit și clonați-o. Înainte de a continua, asigurați-vă că vă aflați în directorul rădăcină.

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.

Copierea conținutului implicit

Pentru a utiliza conținutul implicit cu site-ul, rulați următoarea comandă.

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

Copiază conținutul din folderul exampleSite în rădăcina site-ului dvs.

  Cum să creați și să imprimați etichete în Microsoft Word

Se actualizează fișierul Config.toml

Apoi, trebuie să edităm fișierul Config.toml. Stochează informații de configurare a proiectului și este necesar să le configurați corect pentru ca site-ul dvs. Jamstack să funcționeze.

Pentru moment, trebuie să editați următoarea linie la acesta.

baseURL = "/"

themesDir = "themes"

theme = "hugo-hero-theme"

Notă: trebuie să continuați să actualizați fișierul Config.toml pe măsură ce proiectul progresează. De asemenea, deoarece ați folosit conținut implicit, Config.toml este actualizat pentru a se adapta la conținutul exemplu.

Testăm site-ul nostru Jamstack

Pentru a rula site-ul nostru, trebuie să generăm din nou site-ul Hugo cu comanda hugo.

$ hugo

Apoi, pornim serverul. Pentru a face acest lucru, rulați comanda hugo serve.

$ hugo serve
#output

[email protected]:~/tipstrick.ro$ 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/tipstrick.ro/{archetypes,content,data,layouts,static,themes}

Watching for config changes in /home/nitt/tipstrick.ro/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

Notă: site-ul dvs. este acum găzduit și disponibil la 127.0.0.1. Dacă, dintr-un motiv oarecare, nu se deschide, încercați să deschideți adresa alternativă dată alături. În acest caz, este localhost:42973

Editarea temelor de conținut implicit

De aici, sunteți liber să editați conținutul implicit. O puteți face accesând folderul Conținut. Să edităm conținutul paginii de index. Pentru a face acest lucru, accesați Conținut > Muncă > Index.md

Așa arată după ce o editați.

Crearea unui site de blog

Trebuie să alegeți o temă potrivită dacă doriți doar să creați un blog. În acest scop, să folosim tema Hyde.

Similar cu modul în care am configurat noul nostru site, trebuie să rulați următoarele comenzi.

$ hugo new site tipstrick.ro-jamstack

$ cd tipstrick.ro-jamstack/themes

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

Apoi, editați fișierul Config.toml pentru a adăuga valoarea theme = „hyde”.

Creați o postare nouă

Trebuie să rulați comanda hugo new pentru a crea o nouă postare, urmată de fișierul 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$

Editarea Postării

Pentru a edita postarea nou creată hellogeefklare.md, deschideți fișierul hellogeekflare.md în editorul de text preferat.

Vă va arăta următorul conținut.

---

title: "Hello tipstrick.ro"

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

draft: true

---

Aici puteți adăuga orice conținut în Markdown.

Să adăugăm următorul conținut în 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*.

Odată ce ați introdus conținutul de mai sus în fișierul .md, ar trebui să arate ca cel de mai jos (în funcție de editorul dvs., folosim Visual Studio Code).

Cu toate acestea, va arăta complet diferit când îl servim.

Notă: asigurați-vă că modificați valoarea schiței de la „adevărat” la „fals”

Minunat! Am creat două site-uri web Jamstack, un site de afaceri mici și un alt blog.

După editarea site-ului, puteți genera fișierele rulând comanda hugo. Acesta va crea fișierul și îl va pune în folderul /public.

$ hugo

#5. Implementarea site-ului Jamstack pe Netlify

Cu site-urile noastre create, să le implementăm. În acest scop, vom folosi Netlify.

Netlify este un serviciu susținut de CDN care oferă utilizatorilor ca tine să găzduiască site-uri rapide. Puteți conecta Netlify cu Github și automatiza procesul. Este un serviciu gratuit cu câteva funcții în spatele pereților de plată.

  Cum să descărcați un tabel HTML în format CSV în Firefox

Sarcina noastră este să împingem codul către Netlify și să-l lăsăm pe Netlify să se ocupe de totul pentru noi.

Configurarea depozitului Git local

Acum este timpul să configuram depozitul Git.

Pentru a iniția depozitul Git, rulați următoarea comandă la rădăcina proiectului.

$ git init

În continuare, trebuie să setăm tema ca submodul. Acesta este un pas important. Din punct de vedere tehnic, creează sub-arhive în cadrul depozitului dvs. (Îți amintești, ai făcut o clonă git pe tema Hugo?). Vă va oferi mai mult control asupra site-ului dvs. Jamstack.

De exemplu, puteți descărca actualizări ale temei dvs. De asemenea, trebuie să o faceți, deoarece Netlify are nevoie de teme ca submodule pentru a le găzdui.

Deci, pentru a adăuga tema ca submodul, rulați următoarea comandă.

$ git rim --cached themes/hyde

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

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

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

[email protected]:~/tipstrick.ro-jamstack$

Crearea unui depozit pe GitHub

Odată ce configurarea locală este finalizată, este timpul să creați un nou depozit GitHub.

Odată creat, trebuie să adăugați originea în depozitul dvs. local.

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

Acum, trage-l.

$ git branch -M main

$ git pull origin main

Creați un nou commit

Acum, este timpul să creați un nou commit. Rulați următoarea comandă pentru a adăuga toate fișierele în ramura principală.

$  git add .

Acum, rulați comanda commit pentru a comite modificările.

$ git commit -m “First commit”
#Output

[email protected]:~/tipstrick.ro-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

În cele din urmă, împingeți modificările în GitHub.

$ git push --set-upstream origin main

Notă: trebuie să introduceți numele de utilizator și parola GitHub pentru a funcționa.

#6. Lucrul cu Netlify

Excelent, depozitul nostru este acum creat. Acum, trecem la Netlify. Dacă aveți deja un cont, conectați-vă sau creați un cont nou.

Pentru conturile mai noi, va rula instantaneu un expert pentru dvs. În caz contrar, veți ajunge pe tabloul de bord al contului dvs. Dacă ajungeți pe tabloul de bord, faceți clic pe opțiunea „Adăugați site nou” din Site-uri.

Sub Adăugați site nou, alegeți „Importați un proiect existent”.

Apoi vă va cere să alegeți un furnizor Git. Pe măsură ce folosim GitHub, îl vom alege. De asemenea, puteți opta pentru Bitbucket, GitLab și Azure DevOps.

Apoi, va lista toate proiectele dvs. De aici, selectați depozitul GitHub pe care l-ați creat pentru acest proiect. Pentru noi, este „tutorialul tipstrick.ro-jamstack”. De asemenea, puteți alege să încărcați celălalt proiect pe care l-am creat.

Apoi, vă va cere să selectați ramura de implementat și să alegeți setările de bază de construcție. Pentru moment, puteți seta totul la implicit.

Faceți clic pe „Depoy Site” pentru a-l implementa.

Acum, trebuie să așteptați ca Netlify să-și facă treaba. Odată implementat, mesajul va fi „Site-ul dvs. este implementat”.

Acum, faceți clic pe site-ul din stânga sus.

Cu toate acestea, veți observa că site-ul nu se încarcă corect. Acest lucru se datorează faptului că adresa URL de bază din fișierul Config.toml nu este setată corect. Deoarece Netlify a generat o nouă adresă URL a proiectului, trebuie să o adăugați la fișierul Config.toml.

În cazul nostru, site-ul se află la https://animated-beijinho-2baa8b.netlify.app/

Asta înseamnă că trebuie să adăugăm URL-ul de bază.

Pentru a face acest lucru, accesați configurația locală și modificați valoarea.

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

languageCode="en-us"

title="My new Jamstack site"

theme="hyde"

Pentru a împinge modificarea, trebuie să rulați următoarea comandă.

$ git add .

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

Netlify este inteligent. Când detectează un nou commit, va implementa automat site-ul dvs. din nou.

Dacă încărcați site-ul acum, acesta se va încărca perfect.

Wooo! Ai făcut-o. Știu că sunt multe de învățat. Cu toate acestea, veți găsi întregul proces intuitiv odată ce îl faceți de câteva ori.

Cuvinte finale

Jamstack a cucerit noua eră a dezvoltatorilor. Deblochează performanța și, de asemenea, îmbunătățește modul în care sunt implementate site-urile. Jamstack a crescut cu membri excelenți ai ecosistemului, cum ar fi Hugo și Netlify. Fără îndoială, va crește doar de aici.

Apoi, vedeți cum să implementați aplicația frontend pe Netlify.