Un instrument care ar trebui să fie în arsenalul dvs. de codificare web este diagrama de stare. O diagramă de stare arată diferitele "stări" (reacții) pe care aplicația dvs. (de exemplu, site-ul web) le poate conține, precum și ce acțiuni sau intrări (de la utilizator) sunt necesare pentru a ajunge la o anumită stare. O diagramă de stare vă ajută să realizați în minte toate interacțiunile posibile între utilizatori și aplicații. Acest lucru crește șansele ca cel puțin să luați în considerare codarea pentru toate posibilitățile, pentru că acum le cunoașteți pe toate - ceea ce reduce șansele de a avea cod de buggy sau mai rău, ați uitat să vă ocupați de funcționalitatea specifică.
O schemă de stare constă din două componente: cercurile pentru a reprezenta stările (reacțiile / ieșirile aplicației) și săgețile pentru a reprezenta tranzițiile (acțiunile utilizatorului / intrarea). Diagramele de stare sunt foarte utile pentru aplicațiile complexe și nu atât de complexe, de orice tip. Cu toate acestea, atunci când vine vorba de dezvoltarea site-ului, diagramele de stare nu sunt întotdeauna de folos:
Pe de altă parte, dacă construiți un site web unde trebuie să se ocupe de tranziții speciale, atunci o diagrama de stare poate fi de mare folos:
Lucrul surprinzător este că diagramele de stat nu sunt toate complicate pentru a produce. Cu toate acestea, din experiența mea, ei nu sunt folosiți de tot de multe ori de majoritatea programatorilor, în ciuda beneficiilor (înțelegerea mai profundă a interacțiunilor utilizatorilor, coeziunea efortului de codificare). Jur pe ele - sau când am codat în fiecare zi în diferite locuri de muncă.
Se recomandă să faceți mai întâi diagrame de stare pe hârtie, apoi să le transferați pe o copie digitală dacă și numai dacă este necesar. (Există ceva despre tactilitatea de a schița relațiile de intrare / afișare pe hârtie, ceea ce le face mai concrete în mintea ta, făcând mai ușor să găzdui toate interacțiunile posibile și, astfel, să reduci bug-urile în aplicațiile tale).
O diagramă de stare constă din:
Puteți vedea un exemplu simplu direct de mai jos - care va fi extins mai târziu în acest articol:
Iată pașii pentru crearea diagramelor de stare (cu aplicații orientate către aplicații bazate pe site):
Pentru a extinde numărul # 7 de mai sus, rețineți că prin intermediul site-urilor web, s-ar putea să se repete acțiunile. De exemplu, dacă fiecare pagină include același meniu de navigare, nu este necesar să afișați acele tranziții mereu și repede și să agitați diagrama de stare. Doar reprezintă acțiuni grupate cu o notație / simbol de scurtă durată.
(Este mult mai ușor să înțelegi o diagrama de stare dacă tu ești persoana care o desenează, un pas la un moment dat Dacă ești o persoană care uită la o schemă de stare completă, ar putea fi intimidantă.De aceea, diagramele de stat trăiesc adesea doar pe hârtie - presupunând că le folosiți.
Pentru un site web care utilizează Nu Funcțiile AJAX-y (adică orice caracteristică în care adresa URL nu se modifică), o diagramă de stare este destul de ușor de produs, dar în general inutilă. De exemplu, un site web static în care fiecare pagină este conectată la fiecare altă pagină are ca rezultat o diagramă de stare care uneori este denumită grafic "complet conectat". Astfel de diagrame de stare sunt de obicei inutile, pentru că nu există o manevrabilitate specială de vizualizare. Fiecare stat este conectat la orice alt stat)
În cazul în care diagramele de stare sunt cele mai utile, este pentru site-urile dinamice - especiale cu AJAX-y caracteristici (cum ar fi meniurile drop, glisiere, acordeoane, galerii, etc). În acest din urmă caz, este posibil ca URL-ul din browser să nu se modifice, dar conținutul paginii se face parțial. Este mai greu să vizualizăm toate stările posibile și tranzițiile (acțiunile), deoarece o "pagină" poate avea mai multe sub-stări.
O diagramă de stare (sau un set de diagrame tot mai detaliate) vine foarte util în acest caz - mai ales dacă există o echipă de coderi (și uneori designeri) care să lucreze cu.
Într-un tutorial viitoare vă voi arăta cum să codificați jQuery pentru două efecte pe care le folosesc în șablonul About Me. Pagina live are câteva erori CSS care trebuie mai întâi finisate. Aș dori, de asemenea, să adaug câteva caracteristici bazate pe jQuery dacă este suficient timp. Aceste caracteristici suplimentare vor face obiectul exemplului nostru.
În viitor, acest șablon se va transforma într-o temă gratuită WordPress destinată freelancerilor care doresc să-și prezinte experiența lor de lucru (concerte). Pentru moment, vreau să arăt cum diagramele de stare vă pot ajuta să înțelegeți cauza / reacțiile necesare (adică intrare / tranziții) pentru galeria "Current Gigs" văzută mai sus. Înțelegerea tranzițiilor necesare vă ajută să codificați cu mai multă încredere, iar codarea este independentă de limbă. Deci puteți decide biblioteca / limbajul de cod după crearea diagramei de stare.
Dacă vă uitați la galeria "Curiile actuale" în centrul din stânga imaginii de mai sus sau pe pagina live, veți vedea că acesta este, în esență, același concept ca și o galerie de imagini. Dați clic pe un link și vor apărea detalii despre acel "gig". Cu toate acestea, atunci când am construit pagina live, nu au existat tutoriale jQuery cu privire la modul de aruncare a textului în mix, pentru fiecare "cadru" al vitrinei. Trebuia să vină cu propriul meu cod.
Pentru a face acest lucru, a trebuit să înțeleg mai întâi toate interacțiunile posibile ale utilizatorilor. O diagramă de stare este ideală pentru acest lucru. Să mergem în față, totuși. Ceea ce am vrut cu adevărat este o zonă de prezentare care prezintă atât concerte curente, cât și concerte anterioare. Este un fel de C.V. (Curriculum Vitae, aka "resume"), care prezintă o galerie de experiență de lucru. Fiecare cadru al concertului conține o imagine a paginii de pornire a site-ului asociat, împreună cu un text care oferă detalii despre munca pe care am făcut-o sau o fac acolo.
Pentru moment, pagina are doar "Concursuri curente", dar ar trebui să aibă și "Concursuri anterioare". Iată o listă a cerințelor funcționale pentru ceea ce ar trebui să aibă zona de prezentare:
Așadar, pentru a reitera, obiectivul este să aveți o interfață cu tab-uri, unde filele sunt etichetate "Concursuri curente" și "Concursuri anterioare". Acest lucru permite mai multe file mai târziu, limitată numai de lățimea fiecărei etichete și de lățimea spațiului de expunere (590 de pixeli). Dar vreau ca filele să fie "invizibile", așa cum am menționat. În loc de filele tipice dintr-o interfață tab, vreau să folosesc mini-bannere. Dacă te uiți la pagina de testare live, există un mini-banner etichetat "Concursuri curente" și un alt etichetat "Gigs Past". Acestea vor fi filele. Aici este un snap de ecran de aproape de ceea ce ar putea arata zona de prezentare finală, cu setările implicite.
Pentru a crea diagrama de stare, trebuie mai întâi să enumerăm fiecare stare, intrare și acțiune unică:
Notă: În acest moment, ne ocupăm doar de ceea ce se întâmplă în C.V. casetă de prezentare. În diagrama de stare, nu ne pasă de acțiunile care afectează alte părți ale paginii web. Nu prezentăm decât acțiuni / reacții care afectează C.V. casetă de prezentare.
Iată o schemă de stare a eșantionului pentru funcționalitatea de mai sus.
Câteva note despre această diagramă:
Extinzând la punctul # 5 de mai sus, regulile de bază sunt că, dacă există mai multe tranziții repetitive dintr-un grup de state asociat, puteți adnota tranzițiile cu un fel de scurt formular. Pur și simplu doriți să obțineți un sentiment al tranzițiilor importante, astfel încât acestea să fie primii în mintea voastră. O altă abordare este să se ia o diagramă complexă și să se împartă în părți: prezentarea generală, apoi versiunile "explodate" ale clusterelor de tranziție.
De exemplu, diagrama de mai sus ar fi putut avea o diagramă de stare principală care conține nodurile S, CG și PG. Apoi vor exista două diagrame detaliate. Unul ar avea S, CG, și sub-state corespunzătoare reprezentând diverse concursuri. Cealaltă diagrama detaliată ar avea S, PG și sub-stările corespunzătoare gig.
În general, acum ar trebui să aveți o imagine mai clară despre modul în care funcționează secțiunea vitrină. Nu voi intra în modul de a trece de la o schemă de stare la un cod real. Acest lucru ar trebui să devină evident odată ce înțelegeți toate interacțiunile utilizatorilor. Diagramele de stare - și înțelegerea lor ar trebui să vă ajute să scrieți un cod mai coerent, reducând șansele unei aplicații buggy. Tehnica de codare nu se schimbă.