WordPress pentru dezvoltarea de aplicații web Refacerea arhitecturii

În această serie, suntem în curs de a vorbi despre modul în care putem construi aplicații web folosind WordPress. Și, deși nu este o serie tehnică în care vom examina codul, noi sunteți care acoperă subiecte precum cadre, fundații, modele de design, arhitecturi și așa mai departe.

Dacă nu ați citit primul post din serie, îl recomand; cu toate acestea, în scopul acestui post, putem rezuma postul anterior, după cum urmează:

Pe scurt, software-ul poate fi construit pe cadre, software-ul poate extinde fundațiile.

Pur și simplu, am diferențiat între cadre și fundații - doi termeni care sunt deseori folosiți interschimbabil în software-ul, în ciuda faptului că nu sunt același lucru. WordPress este o fundație deoarece este o aplicație la sine. Nu este un cadru.

În acest scop, când vine vorba de construirea de aplicații web pe WordPress, trebuie să regândim arhitectura sau să reevaluăm modelele noastre conceptuale pentru modul în care sunt construite aplicațiile.


Structura unei aplicații web

La nivel înalt, posibil, aplicațiile web sunt în mod normal structurate cu următoarele trei componente:

  1. Stratul bazei de date
  2. Stratul aplicației
  3. Stratul de prezentare

În general, stratul de prezentare este ceea ce văd utilizatorul și cu ce interacționează utilizatorul. Acesta include toate stilurile, codul client-ului și marcajul necesar pentru a pune ceva în fața utilizatorului.

Atunci când utilizatorul face clic pe ceva sau pagina redă informații recuperate din baza de date, interacționează cu stratul de aplicație.

Stratul de aplicație este responsabil pentru coordonarea informațiilor din browser și / sau din acțiunea utilizatorului către baza de date. Uneori, aceasta constă în scrierea de informații în baza de date - cum ar fi informațiile dintr-un câmp de formular - la citirea informațiilor din baza de date, cum ar fi recuperarea informațiilor despre contul unui utilizator.

La fel ca Layerul de prezentare constă din diferite componente - cum ar fi stiluri, JavaScript, marcare etc. - stratul de aplicație poate consta dintr-o varietate de componente diferite, cum ar fi sistemele necesare pentru citirea și scrierea datelor în baza de date, dezinfectarea informațiilor , validarea informațiilor și aplicarea anumitor reguli care sunt unice pentru problema la îndemână.

În cele din urmă, stratul de bază de date este locul unde datele sunt stocate. Aceasta poate consta în sistemul de fișiere, poate fi alcătuit dintr-o bază de date MySQL sau poate consta dintr-o soluție terță parte, cum ar fi un datastore care este "în nor", cum ar fi Amazon S3 sau ceva de genul asta.

Este tot abstract

Punctul principal de luat de la asta este că în software-ul, ne confruntăm întotdeauna cu un anumit nivel de abstractizare. De exemplu, vorbim despre magazinul de date sau stratul bazei de date, dar nu suntem cu adevărat specifici. Același lucru se întâmplă și cu stratul de aplicație și cu stratul de prezentare.

  • Vorbim despre o bază de date relațională cu mai multe tabele sau despre depozitare în cloud?
  • Ce fel de strat de acces la date se va conecta la nivelul aplicației pentru a vorbi cu baza de date?
  • Ce cadre și limbi folosim pe front-end? Vanilla JavaScript, jQuery, Knockout.js? Ce se întâmplă cu preprocesoarele CSS - LESS sau Sass?

Evident, nu căutăm să oferim răspunsuri la aceste întrebări chiar acum, însă punctul este că toate aplicațiile web constau în componente similare, dar detaliile fiecărei componente variază de la proiect la proiect.


Componentele WordPress

Ca o aplicație web în sine, WordPress este un exemplu perfect de modul în care diferite tehnologii vin împreună pentru a forma o aplicație web:

  1. Stratul bazei de date este o bază de date MySQL.
  2. Stratul aplicației - care unele ar considera WordPress în sine - este scris în PHP și se ocupă de o mulțime de operațiuni de bază pentru citire și scriere la magazinul de date toate oferind în același timp API-uri pentru dezvoltatori să profite în continuare de ea.
  3. Stratul de prezentare utilizează CSS de bază (cel puțin pentru moment), HTML (cu unele teme care utilizează acum HTML5), jQuery și cu părți ale tabloului de bord folosind Backbone.js.

Deci aceasta este arhitectura WordPress, dar ce zici de proiectele pe care dorim sa le construim pe partea de sus a aplicatiei? Cum urmăresc aceeași arhitectură?

Amintiți-vă că WordPress este o fundație - nu un cadru - așa că suntem supuși în mod implicit arhitecturii WordPress. Asta face nu înseamnă că nu putem aduce în propriile biblioteci, în unele cazuri, dar influențează modul în care sunt construite aplicațiile și proiectele noastre.

Vom vorbi mai multe despre biblioteci, extensibilitate și multe altele, dar mai întâi, este important să rețineți că într-o zi și o vârstă în care MVC (și MVVM și alte variante ale paradigmei Model, View, Whatever) sunt toate furia, WordPress face nu urmați această convenție.

Există argumente pentru și împotriva motivului pentru care ar putea fi un lucru bun sau un lucru rău, dar acesta nu este scopul acestui post. În schimb, este pur și simplu de remarcat faptul că WordPress utilizează un model bazat pe evenimente, mai degrabă decât panoul de control al modelului.

În acest scop, merită să înțelegeți modul în care funcționează modelul bazat pe evenimente, astfel încât să aveți o înțelegere clară a modului în care funcționează cârligele WordPress și cum puteți schimba modul în care vă gândiți la MVC sau la orice altă paradigmă pe care sunteți obișnuit să o utilizați, la modul în care WordPress gestionează informațiile sale.


Ce înseamnă să fiți implicați în evenimente?

Înainte de a examina un exemplu de aplicație bazată pe evenimente, să revedem ce înseamnă să urmați paradigma MVC.

  • Mai întâi, punctul de vedere este prezentarea. Utilizatorul vede informații și interacționează cu interfața cu utilizatorul.
  • Apoi, controlorii coordonează informațiile de la și de la model și vedere. Acestea răspund la acțiunile utilizatorilor și recuperează informațiile din model în conductă în vizualizare.
  • După aceasta, modelul reprezintă datele din baza de date. Acest lucru se poate face în mai multe moduri, dar una dintre cele mai populare moduri este de a cartografia datele din baza de date într-un model obiect-relațional astfel încât datele să fie reprezentate în formatul obiectelor.

Întregul model MVC arată astfel:


MVC

Acum, aplicațiile bazate pe evenimente pot avea unele din aceleași componente - adică pot avea vederi și modele sau vizualizări și obiecte de date - dar nu au neapărat un controler care să coordoneze informațiile de la capătul frontal la cel din spate.

În schimb, programarea bazată pe evenimente se îndepărtează de premisa că "ceva așa cum sa întâmplat". De aici și numele acţiuni în WordPress lingo (desigur, avem filtre, dar le voi acoperi pe moment).

WordPress oferă cârlige care sunt literalmente puncte în execuție în care putem introduce funcționalitatea noastră, astfel încât WordPress recunoaște că "când acest eveniment se întâmplă, trebuie să fac foc aceste funcții" Unde aceste funcții sunt definite ca orice am furnizat.

Adevărul este că filtrele funcționează la fel, dar scopul lor este diferit. Pe scurt, filtrele sunt acțiuni care sunt destinate manipulării datelor (cum ar fi adăugarea, prependarea, eliminarea sau actualizarea conținutului) într-un fel înainte de a reveni la execuția aplicației.

Deci, cum arata aceasta??


Evenimente

Nimic foarte complicat, corect?


Care este noua noastră arhitectură?

Ideea acestui articol este în primul rând să ne gândim în termeni de programare bazată pe eveniment și cum să ne coordonăm eforturile de a construi aplicații web în mod special pe WordPress.

Asta înseamnă că este important să ne gândim în termeni de evenimente sau faptul că "sa întâmplat ceva", astfel încât să știm când să inserăm în mod corespunzător propriile noastre acțiuni. Vom vorbi despre acest lucru un pic mai detaliat în articolul următor, dar punctul principal pe care vreau să-l luați de la acest articol special este că doar pentru că ceva nu este MVC (sau oricare ar fi următoarea paradigmă populară ) nu înseamnă că nu este potrivit pentru dezvoltarea aplicațiilor.

Fiecare model și arhitectură ne oferă avantaje și dezavantaje, toate acestea putând contribui la succesul realizării unei aplicații web.


Urmeaza…

Următoarea serie va fi o analiză mai detaliată a modului în care cârligele joacă un rol esențial în crearea aplicațiilor web pe WordPress și apoi vom începe să ne uităm la unele dintre facilitățile pe care WordPress le oferă în afara casetei care fac o astfel de opțiune solidă pentru anumite tipuri (citiți: nu toate tipuri) de aplicații web.

Cod