Tema
/
Interneto svetainių kliento dalies kūrimas JS
📖 Teorija

Namų darbas — vienas notify()

Namų darbas — vienas notify().

  1. Sukurk js/state.js su subscribe/notify, getState, loadFavorites/persistFavorites (su apsauga) ir toggleFavorite. main.js — viena subscribe() registracija.
  2. Panaikink 8 pamokos klaidą. Įsitikink, kad joks veiksmas nebekviečia renderGallery/Collection/Home tiesiogiai — tik notify(). Pakartok 8 pamokos scenarijų (išsaugok, pašalink iš kolekcijos, grįžk į galeriją) — ♡ dabar teisingas.
  3. Persistencija. Paspaudi kelis ♡, perkrauk puslapį — mėgstamiausi liko. Atidaryk DevTools → Application → Local Storage ir rask cosmos_favorites raktą su JSON.
  4. Sulaužyk saugyklą. Local Storage viduje rankomis įrašyk į cosmos_favorites netaisyklingą tekstą (pvz. {{{). Perkrauk — programa NELŪŽTA, tik pradeda nuo tuščio sąrašo (apsauga veikia).
  5. Papildomai: pridėk removeFavorite(date) ir įsitikink, kad jam užtenka persistFavorites() + notify() — jokio vaizdo minėti nereikia.

Privalomi testai:

  • Vieno paspaudimo testas: ♡ atnaujina galeriją, kolekciją ir skaitiklį iš karto.
  • Persistencijos testas: po perkrovimo mėgstamiausi vietoje.
  • Apsaugos testas: sugadintas JSON saugykloje neužmuša programos.

Atsiskaitymui: ekrano nuotraukos: (1) ♡ atnaujina viską vienu paspaudimu, (2) cosmos_favorites DevTools'e, (3) programa veikia po sugadinto JSON.

Toliau. Turim tvarkingą būseną su pub/sub. 10 pamokoje pastatysim kolekcijos lentelę: rikiuojami stulpeliai, puslapiavimas ir paieška — viskas skaito getState() ir prenumeruoja. Ir sutiksim klastingą Array.sort() spąstą.