Tema
/
HTML ir CSS pagrindai HTML
Pamoka 1 / 7 Žiniatinklis ir pirmasis puslapis ~45 min
Teorija

Kur einame ir kaip veikia žiniatinklis

Sveikas — čia pradedi kurti internetui. Prieš rašydami pirmą eilutę, pažiūrėk, kur einame.

Šiame takelyje pastatysi Cosmos — NASA dienos nuotraukos svetainės — sąsają: tikrą, statišką puslapį su semantiniu HTML, responsyviu išdėstymu ir šviesia bei tamsia tema. Be nė vienos JavaScript eilutės. Failus, į kuriuos augsi, gali atsidaryti dabar: github.com/programuoki/cosmos — pažiūrėk vanilla/index.html ir vanilla/style.css, į ten ir judame.

Kad tas puslapis atgytų — galerija filtruotųsi, nuotrauka atsidarytų, tema persijungtų paspaudus — reikia JavaScript, o tai jau kito, kliento dalies takelio darbas. Čia sudedi puslapį statiškai; ten jis paverčiamas veikiančiu. Be karkaso, nieko neįdiegęs, be surinkimo (build step) — tik failai, kuriuos naršyklė moka perskaityti.

Trys kalbos, trys darbai. Visas žiniatinklis stovi ant trijų kalbų, ir kiekviena turi vieną darbą:

  • HTMLkas dalykai YRA: antraštė, sąrašas, forma, nuoroda.
  • CSSkaip jie ATRODO: spalvos, tarpai, išdėstymas.
  • JavaScriptkas NUTINKA: paspaudimai, duomenų atsisiuntimas, pokyčiai ekrane.

Laikyk šiuos tris atskirai galvoje ir didžioji dalis darbo lieka paprasta. Sumaišyk juos — ir niekas neveikia taip, kaip tikiesi. Visos septynios šio takelio pamokos — apie pirmas dvi, HTML ir CSS. Tai sąmoninga: puslapį, kuris gerai sudėtas iš apačios, lengva paversti interaktyviu; o tą, kuris sudėtas prastai — neįmanoma.

Kas nutinka, kai įrašai adresą

Kai naršyklėje įrašai adresą, ji išsiunčia serveriui užklausą dėl vieno failo:

GET /index.html HTTP/1.1
Host: example.com

Serveris atsako — su būsenos kodu ir turiniu:

HTTP/1.1 200 OK
Content-Type: text/html

<!DOCTYPE html>...

200 reiškia „gerai, štai failas". Naršyklė perskaito HTML, randa jame nurodytus CSS failus ir paveikslus — ir prašo kiekvieno iš jų atskirai. Vienas puslapis yra daug užklausų. Netrukus jas visas pamatysi savo akimis.

Kas nusprendžia, ką HTML reiškia? Specifikacijas leidžia W3C ir WHATWG; naršyklių kūrėjai jas įgyvendina. Todėl tas pats puslapis veikia ir Chrome, ir Firefox — ir todėl „pas mane veikia" čia yra silpnesnis argumentas nei bet kur kitur.

Vienas klausimas, kurį verta apmąstyti dabar: kur čia vykdomas tavo kodas? Pagalvok sekundę, prieš skaitydamas toliau. — Jis vykdomas lankytojo naršyklėje, jo kompiuteryje, jo kontrolėje. Viską, ką parašai, gali perskaityti, pakeisti ir išjungti tas, kas žiūri į puslapį. Tas vienas faktas paaiškina pusę to, ką darysime vėliau.

Serviruok aplanką, neatidarinėk failo

Kad puslapį pamatytum taip, kaip jį matys tikras lankytojas, jį reikia serviruoti — paleisti mažą žiniatinklio serverį savo aplanke:

npx serve
# arba
python3 -m http.server
# arba „Live Server" plėtinys VS Code redaktoriuje

Dukart spustelėti failą (adresas file:///…) šiandien veikia — bet nustos veikti vos suskaidžius kodą į modulius, o nuo to prasideda kliento dalies takelis: naršyklė saugumo sumetimais atsisako jų įkelti tiesiai iš disko. Serviruok aplanką nuo pat pradžių ir su ta siena niekada nesusidursi.

Kai paleisi, adreso juostoje pamatysi localhost:3000 (arba :8000). Tai tikras žiniatinklio serveris tavo paties kompiuteryje — niekas kitas jo nepasieks, o elgiasi jis taip, kaip elgsis tikrasis.

Kodėl naršyklė apskritai atsisako perskaityti failą iš tavo paties disko? — Todėl, kad atsisiųstas puslapis kitaip galėtų perskaityti kiekvieną kitą failą tame aplanke. Taisyklė, kuri tam užkerta kelią, yra ta pati, kuri vėliau sukelia CORS klaidas — ta pati mintis, kitas simptomas.

Naršyklės įrankiai

Paspausk F12 — atsidarys naršyklės kūrėjo įrankiai. Trys svarbiausi skirtukai:

  • Elements — puslapis taip, kaip jį supranta naršyklė.
  • Console — čia atsiras tavo klaidos (vėliau, kai bus JavaScript).
  • Network — kiekviena užklausa su savo būsenos kodu.

Laikyk šį langą atidarytą visą laiką. Kai kažkas neveikia, pirmiausia žiūrėk čia, o tik tada į savo kodą.

Vienas dalykas, kuris iš pradžių klaidina: Elements skydelis nėra tavo failas. Jis rodo gyvą puslapį, įskaitant viską, ką pakeitė JavaScript. Redaguok jį ten — ir tavo failas lieka nepaliestas: perkrauk puslapį, ir pakeitimas dingsta. Puiku eksperimentams, painu, jei to nežinai.