Pusa web framework, der overfører JavaScript front-end logik til serversiden

Pusa web-framework er blevet udgivet med implementering af et koncept, der overfører front-end-logikken, udført i browseren ved hjælp af JavaScript, til back-end-siden - styring af browser og DOM-elementer, samt forretningslogik udføres på bagenden. JavaScript-koden, der udføres på browsersiden, erstattes med et universelt lag, der kalder handlere placeret på backend-siden. Der er ingen grund til at udvikle ved hjælp af JavaScript til frontend. Pusa-referenceimplementeringen er skrevet i PHP og er licenseret under GPLv3. Ud over PHP kan teknologien implementeres på et hvilket som helst andet sprog, herunder JavaScript/Node.js, Java, Python, Go og Ruby.

Pusa definerer en udvekslingsprotokol baseret på et minimalistisk sæt kommandoer. Når siden indlæses, indlæser browseren det underliggende DOM-indhold og Pusa-Fronts JavaScript-kerne. Pusa-Front sender browserhændelser (såsom klik, sløring, fokus og tastetryk) og anmodningsparametre (elementet, der forårsagede hændelsen, dens attributter, URL osv.) til Pusa-Back-serverhandleren ved hjælp af Ajax-anmodninger. Baseret på de modtagne data bestemmer Pusa-Back controlleren, udfører nyttelasten og genererer et svarsæt af kommandoer. Efter at have modtaget anmodningssvaret, udfører Pusa-Front kommandoer og ændrer indholdet af DOM og browsermiljøet.

Tilstanden af ​​frontend er genereret, men ikke kontrolleret af backend, hvilket gør udvikling til Pusa ligner kode til et videokort eller Canvas, hvor resultatet af eksekveringen ikke styres af udvikleren. For at skabe interaktive applikationer baseret på Canvas og onmousemove er det muligt at downloade og bruge yderligere JavaScript-scripts på klientsiden. Blandt ulemperne ved metoden er der også en overførsel af en del af belastningen fra frontend til backend og en stigning i hyppigheden af ​​dataudveksling med serveren.

Blandt fordelene er: eliminering af behovet for deltagelse af JavaScript-frontend-udviklere, stabil og kompakt klientkode (11kb), utilgængelighed af hovedkoden fra front-end, intet behov for REST-serialisering og værktøjer som gRPC, eliminering af problemer med at koordinere anmodningsrouting mellem front-end og back-end.

Kilde: opennet.ru

Tilføj en kommentar