Avalikustatud Pusa veebiraamistik, mis rakendab kontseptsiooni, viies frontendi loogika, mis toimub brauseris JavaScripti abil, serveripoolsele küljele — brauseri juhtimine ja DOM-elementide haldamine ning äriloogika viiakse ellu serveris. Brauseripoolne JavaScripti kood asendatakse universaalse kihiga, mis kutsub esile serveripoolseid töötlejaid. JavaScripti kasutamine frontendi arendamiseks ei ole vajalik. Pusa mudelrakendus on kirjutatud PHP keeles ja levitatakse GPLv3 litsentsi alusel. Lisaks PHP-le on tehnoloogiat võimalik rakendada ka muudes keeltes, sealhulgas JavaScript/Node.js, Java, Python, Go ja Ruby.
Pusa määrab protokolli, mis põhineb minimalistlikul käsuseteemal. Kui leht laaditakse, laadib brauser esialgse DOM-sisu ja Pusa-Fronti JavaScripti tuuma. Pusa-Front edastab AJAX-päringute kaudu brauseri sündmusi (nt klõps, hägustumine, fookus ja klahvipress) ja päringu parameetreid (sündmust käivitanud element, selle atribuudid, URL jne) serveripoolsele töötlejale Pusa-Back. Saadud andmete põhjal määrab Pusa-Back kontrolleri, täidab kasuliku koorma ja koostab vastuse käsud. Pärast päringu vastuse saamist täidab Pusa-Front käsud, muutes DOM-i sisu ja brauseri keskkonda.
Fronteendi olek kujuneb, kuid seda ei kontrolli tagaplaan, mis muudab Pusa arenduse sarnaseks videokaardi või Canvas'i koodiga, kus täitmise tulemust ei kontrolli arendaja. Interaktiivsete rakenduste loomiseks Canvas'i ja onmousemove põhjal on ette nähtud võimalus laadida ja kasutada täiendavaid JavaScripti skripte kliendi poolel. Meetodi puudustena märgitakse samuti osa koormuse edasiviimist fronteendilt tagaplaani ning andmevahetuse sageduse suurenemist. serveriga.
Eeliste hulka kuuluvad: JavaScript-i front-end arendajate kaasamise vajaduse välistamine, stabiilne ja kompaktne kliendikood (11 kb), front-endilt peamise koodi mittesaadavus, REST-seerimise ja gRPC-taoliste vahendite vajaduse puudumine, päringute marsruutimise probleemide välistamine front-endi ja back-endi vahel.
Allikas: opennet.ru
