WordPress per lo sviluppo di app Web ripensare l'architettura

In questa serie, stiamo parlando di come possiamo costruire applicazioni web usando WordPress. E anche se questa non è una serie tecnica in cui vedremo il codice, noi siamo che copre argomenti come quadri, fondazioni, modelli di progettazione, architetture e così via.

Se non hai letto il primo post della serie, lo consiglio; tuttavia, ai fini di questo post, possiamo riassumere il post precedente come segue:

In breve, il software può essere costruito su framework, il software può estendere le basi.

In poche parole, abbiamo differenziato tra framework e fondazioni - due termini che sono spesso usati in modo intercambiabile nel software nonostante il fatto che non siano la stessa cosa. WordPress è un fondamento perché è un'applicazione a sé stante. Non è un quadro.

A tal fine, quando si tratta di creare applicazioni Web su WordPress, abbiamo bisogno di ripensare l'architettura o di ri-considerare i nostri modelli concettuali su come vengono costruite le applicazioni.


La struttura di un'applicazione Web

Al livello più alto possibile, le applicazioni web sono normalmente strutturate con le seguenti tre componenti:

  1. Il livello del database
  2. Il livello dell'applicazione
  3. Il livello di presentazione

In generale, il livello di presentazione è ciò che l'utente vede e ciò con cui l'utente interagisce. Include tutti gli stili, il codice lato client e il markup necessari per mettere qualcosa di fronte all'utente.

Quando l'utente fa clic su qualcosa, o la pagina esegue il rendering delle informazioni recuperate dal database, interagisce con il livello applicazione.

L'Application Layer è responsabile del coordinamento delle informazioni dal browser e / o dall'azione dell'utente nel database. A volte, ciò consiste nella scrittura di informazioni nel database, ad esempio informazioni da un campo modulo, alla lettura di informazioni dal database, come il recupero delle informazioni dell'account di un utente.

Molto simile al Presentation Layer è costituito da diversi componenti - come stili, JavaScript, markup e così via - l'Application Layer può consistere in una varietà di componenti diversi come i sistemi necessari per leggere e scrivere dati nel database, sanificare le informazioni , la convalida delle informazioni e l'applicazione di alcune regole uniche per il problema in questione.

Infine, il Database Layer è il luogo in cui vengono archiviati i dati. Questo può consistere nel file system, può consistere in un database MySQL o può consistere in una soluzione di terze parti come un archivio dati "nel cloud" come Amazon S3 o qualcosa del genere.

È tutto astratto

Il punto principale da cui partire è che nel software, abbiamo sempre a che fare con un certo livello di astrazione. Ad esempio, parliamo dell'archivio dati o del livello database, ma non siamo realmente specifici. Lo stesso vale per l'Application Layer e il Presentation Layer.

  • Stiamo parlando di un database relazionale con più tabelle o stiamo parlando di cloud storage?
  • Che tipo di livello di accesso ai dati ci collegheremo al livello dell'applicazione per parlare con il database?
  • Quali strutture e linguaggi stiamo usando sul front-end? Vanilla JavaScript, jQuery, Knockout.js? Che dire dei preprocessori CSS - LESS o Sass?

Ovviamente, non stiamo cercando di fornire risposte a queste domande in questo momento, ma il punto è che tutte le applicazioni web sono costituite da componenti simili, ma i dettagli di ogni componente variano da progetto a progetto.


I componenti di WordPress

Come un'applicazione Web, WordPress è un perfetto esempio di come varie tecnologie si uniscono per formare un'applicazione web:

  1. Il livello del database è un database MySQL.
  2. Il livello dell'applicazione - che alcuni considererebbero WordPress stesso - è scritto in PHP e gestisce molte delle operazioni fondamentali per la lettura e la scrittura nell'archivio dati fornendo tutte le API affinché gli sviluppatori possano trarre ulteriori vantaggi da esso.
  3. Il livello di presentazione utilizza CSS di base (almeno per ora), HTML (con alcuni temi che ora utilizzano HTML5), jQuery e con parti del dashboard che utilizzano Backbone.js.

Quindi questa è l'architettura di WordPress, ma per quanto riguarda i progetti che vogliamo costruire in cima all'applicazione? Come seguono la stessa architettura?

Bene, ricorda che WordPress è un fondamento - non un framework - quindi per impostazione predefinita siamo soggetti all'architettura di WordPress. Questo fa non significa che non possiamo portare nelle nostre librerie, in alcuni casi, ma influenza il modo in cui le nostre applicazioni e i nostri progetti sono costruiti.

Parleremo di più sulle librerie, l'estensibilità e altro in un po ', ma prima è importante notare che in un giorno in cui MVC (e MVVM e altre varianti del modello, Visualizza, Qualunque) paradigma sono tutti la rabbia, WordPress fa non seguire questa convenzione.

Ci sono argomenti a favore e contro perché questa potrebbe essere una cosa buona o cattiva, ma non è questo lo scopo di questo post. Invece, vale semplicemente la pena notare che WordPress utilizza un pattern basato sugli eventi, piuttosto che il pannello di controllo della vista del modello.

E a tal fine, vale la pena capire come funziona il modello basato sugli eventi in modo che tu abbia una chiara comprensione di come funzionano gli hook di WordPress e come puoi cambiare pensando a MVC oa qualunque altro paradigma sei abituato a usare, a come WordPress gestisce le sue informazioni.


Che cosa significa essere guidati dagli eventi?

Prima di dare un'occhiata a un esempio di un'applicazione guidata dagli eventi, rivisitiamo cosa significa seguire il paradigma MVC.

  • In primo luogo, la vista funge da presentazione. L'utente vede le informazioni e interagisce con l'interfaccia utente.
  • Successivamente, i controller coordinano le informazioni da e verso il modello e la vista. Rispondono alle azioni degli utenti e recuperano le informazioni dal modello per condurle nella vista.
  • Successivamente, il modello rappresenta i dati nel database. Questo può essere fatto in diversi modi, ma uno dei modi più popolari è quello di mappare i dati nel database in un modello relazionale a oggetti in modo che i dati siano rappresentati nel formato degli oggetti.

L'intero modello MVC si presenta così:


MVC

Ora, le applicazioni event-driven possono avere alcuni degli stessi componenti, ovvero possono avere viste e modelli o viste e oggetti dati, ma non necessariamente un controller che coordina le informazioni dal front-end al back-end.

Invece, la programmazione basata sugli eventi funziona partendo dal presupposto che "qualcosa come è successo". Da qui il nome per Azioni nel gergo WordPress (ovviamente, abbiamo anche dei filtri, ma li coprirò per un momento).

WordPress fornisce hook che sono letteralmente punti in esecuzione in cui possiamo introdurre le nostre funzionalità in modo tale che WordPress riconosca che "quando quest'evento succede, ho bisogno di sparare queste funzioni" dove queste funzioni sono definiti come qualsiasi cosa abbiamo fornito.

La verità è che i filtri funzionano allo stesso modo, ma il loro scopo è diverso. In breve, i filtri sono azioni pensate per manipolare i dati (come accodamento, prepending, rimozione o aggiornamento del contenuto) in qualche modo prima di tornare all'esecuzione dell'applicazione.

Che aspetto ha??


eventi

Niente di terribilmente complicato, giusto?


Allora, qual è la nostra nuova architettura?

Il punto di questo articolo è principalmente quello di indurci a pensare in termini di programmazione guidata dagli eventi e come coordinare i nostri sforzi di creare applicazioni Web specificamente su WordPress.

Vale a dire che è importante per noi pensare in termini di eventi o il fatto che "qualcosa è successo" in modo da sapere quando inserire in modo appropriato le nostre azioni. Ne parleremo un po 'più in dettaglio nel prossimo articolo, ma il punto principale che voglio che voi ragazzi porterete via da questo particolare articolo è che solo qualcosa non è MVC (o qualunque sia il prossimo paradigma popolare è ) non significa che non è adatto allo sviluppo di applicazioni.

Ogni modello e architettura ci offre vantaggi e svantaggi che possono contribuire al successo della creazione di un'applicazione web.


Avanti il ​​prossimo…

Di seguito, analizzeremo in che modo gli hook svolgono un ruolo fondamentale nella creazione di applicazioni Web su WordPress, quindi inizieremo a esaminare alcune delle funzionalità offerte da WordPress. questo lo rende un'opzione così solida per alcuni tipi (leggi: no tutti tipi) di applicazioni Web.