Webový rámec Pusa, ktorý prenáša logiku front-endu JavaScript na stranu servera

Webový framework Pusa bol publikovaný s implementáciou konceptu, ktorý prenáša front-end logiku, vykonávanú v prehliadači pomocou JavaScriptu, na back-end stranu – správa prehliadača a prvkov DOM, ako aj obchodná logika sú vykonávané na back-end. Kód JavaScript spustený na strane prehliadača je nahradený univerzálnou vrstvou, ktorá volá obslužné nástroje umiestnené na strane backendu. Pre klientske rozhranie nie je potrebné vyvíjať pomocou JavaScriptu. Referenčná implementácia Pusa je napísaná v PHP a je licencovaná pod GPLv3. Okrem PHP môže byť technológia implementovaná v akomkoľvek inom jazyku, vrátane JavaScript/Node.js, Java, Python, Go a Ruby.

Pusa definuje výmenný protokol založený na minimalistickom súbore príkazov. Keď sa stránka načíta, prehliadač načíta základný obsah DOM a jadro JavaScriptu Pusa-Front. Pusa-Front odosiela udalosti prehliadača (ako je kliknutie, rozostrenie, zameranie a stlačenie klávesu) a parametre požiadavky (prvok, ktorý spôsobil udalosť, jeho atribúty, URL atď.) do obsluhy servera Pusa-Back pomocou požiadaviek Ajax. Na základe prijatých údajov Pusa-Back určí ovládač, vykoná užitočné zaťaženie a vygeneruje súbor odozvy príkazov. Po prijatí odpovede na požiadavku Pusa-Front vykoná príkazy, čím zmení obsah DOM a prostredie prehliadača.

Stav frontendu je generovaný, ale nie je kontrolovaný backendom, vďaka čomu je vývoj pre Pusa podobný kódu pre grafickú kartu alebo Canvas, kde výsledok spustenia nekontroluje vývojár. Pre vytváranie interaktívnych aplikácií založených na Canvas a onmousemove je možné stiahnuť a použiť ďalšie JavaScript skripty na strane klienta. Medzi nevýhody metódy patrí aj presun časti záťaže z frontendu na backend a zvýšenie frekvencie výmeny dát so serverom.

Medzi výhody patrí: eliminácia potreby účasti vývojárov front-endu JavaScript, stabilný a kompaktný klientsky kód (11 kb), nedostupnosť hlavného kódu z front-endu, nie je potrebná serializácia REST a nástroje ako gRPC, eliminácia problémy s koordináciou smerovania požiadaviek medzi front-endom a back-endom.

Zdroj: opennet.ru

Pridať komentár