Het webframework Pusa is gepubliceerd, dat het concept implementeert waarbij de frontend-logica, die normaal in de browser met JavaScript wordt uitgevoerd, naar de backend wordt verplaatst ā het beheer van de browser en DOM-elementen, evenals de businesslogica, wordt uitgevoerd op de backend. De JavaScript-code die aan de browserzijde wordt uitgevoerd, wordt vervangen door een universele laag die handlers aanroept die aan de backendzijde zijn. Het is niet nodig om JavaScript voor de frontend te gebruiken. De referentie-implementatie van Pusa is geschreven in PHP en wordt verspreid onder de GPLv3-licentie. Naast PHP kan de technologie in elke andere taal worden geĆÆmplementeerd, waaronder JavaScript/Node.js, Java, Python, Go en Ruby.
Pusa definieert een communicatieprotocol gebaseerd op een minimalist set commando's. Bij het laden van de pagina laadt de browser de basisinhoud van de DOM en de JavaScript-kern van Pusa-Front. Pusa-Front verzendt via Ajax-aanroepen browsergebeurtenissen (zoals click, blur, focus en keypress) en verzoekparameters (zoals het element dat de gebeurtenis heeft veroorzaakt, zijn attributen, URL, etc.) naar de serverhandler Pusa-Back. Op basis van de ontvangen gegevens bepaalt Pusa-Back de controller, voert de payload uit en vormt een respons set commando's. Zodra Pusa-Front de respons van het verzoek heeft ontvangen, voert het de commando's uit, wat de inhoud van de DOM en de omgeving van de browser wijzigt.
De staat van de frontend wordt gevormd maar niet gecontroleerd door de backend, wat de ontwikkeling voor Pusa vergelijkbaar maakt met de code voor een videokaart of Canvas, waar het resultaat van de uitvoering niet door de ontwikkelaar wordt gecontroleerd. Voor het maken van interactieve applicaties op basis van Canvas en onmousemove is er de mogelijkheid om extra JavaScript-scripts aan de clientzijde te laden en te gebruiken. Een van de nadelen van de methode is ook dat een deel van de belasting van de frontend naar de backend wordt overgebracht en de frequentie van gegevensuitwisseling toeneemt. server.
Onder de voordelen zijn: het uitsluiten van de noodzaak voor de betrokkenheid van JavaScript-frontend ontwikkelaars, stabiele en compacte clientcode (11kb), de onbeschikbaarheid van de hoofdcode aan de frontendzijde, geen behoefte aan serialisatie van REST en aan hulpmiddelen zoals gRPC, en het uitsluiten van problemen bij het afstemmen van routeverzoeken tussen de frontend en de backend.
Bron: opennet.ru
