Pusa nettrammeverk som overfører JavaScript front-end logikk til serversiden

Pusa-nettverket er publisert med implementering av et konsept som overfører front-end-logikken, utført i nettleseren ved hjelp av JavaScript, til back-end-siden - administrasjon av nettleseren og DOM-elementer, samt forretningslogikk utføres på bakenden. JavaScript-koden som kjøres på nettlesersiden, erstattes med et universelt lag som kaller opp behandlere som ligger på backend-siden. Det er ikke nødvendig å utvikle med JavaScript for grensesnittet. Pusa-referanseimplementeringen er skrevet i PHP og er lisensiert under GPLv3. I tillegg til PHP kan teknologien implementeres på alle andre språk, inkludert JavaScript/Node.js, Java, Python, Go og Ruby.

Pusa definerer en utvekslingsprotokoll basert på et minimalistisk sett med kommandoer. Når siden laster, laster nettleseren det underliggende DOM-innholdet og Pusa-Fronts JavaScript-kjerne. Pusa-Front sender nettleserhendelser (som klikk, uskarphet, fokus og tastetrykk) og forespørselsparametere (elementet som forårsaket hendelsen, dens attributter, URL osv.) til Pusa-Back-serverbehandleren ved å bruke Ajax-forespørsler. Basert på de mottatte dataene, bestemmer Pusa-Back kontrolleren, utfører nyttelasten og genererer et svarsett med kommandoer. Etter å ha mottatt forespørselssvaret, utfører Pusa-Front kommandoer og endrer innholdet i DOM og nettlesermiljøet.

Tilstanden til frontend er generert, men ikke kontrollert av backend, noe som gjør utvikling for Pusa lik kode for et skjermkort eller Canvas, der resultatet av utførelse ikke kontrolleres av utvikleren. For å lage interaktive applikasjoner basert på Canvas og onmousemove, er det mulig å laste ned og bruke flere JavaScript-skript på klientsiden. Blant ulempene med metoden er det også en overføring av en del av lasten fra frontend til backend og en økning i frekvensen av datautveksling med serveren.

Blant fordelene er: eliminering av behovet for deltakelse av JavaScript-frontend-utviklere, stabil og kompakt klientkode (11kb), utilgjengelighet av hovedkoden fra front-end, ikke behov for REST-serialisering og verktøy som gRPC, eliminering av problemer med å koordinere forespørselsruting mellom front-end og back-end.

Kilde: opennet.ru

Legg til en kommentar