Webový rámec Pusa, který přenáší logiku front-endu JavaScriptu na stranu serveru

Webový framework Pusa byl publikován s implementací konceptu, který přenáší front-end logiku, spouštěnou v prohlížeči pomocí JavaScriptu, na stranu back-endu - správa prohlížeče a prvků DOM, stejně jako obchodní logika se provádí na back-end. Kód JavaScript spouštěný na straně prohlížeče je nahrazen univerzální vrstvou, která volá handlery umístěné na straně backendu. Pro frontend není potřeba vyvíjet pomocí JavaScriptu. Referenční implementace Pusa je napsána v PHP a je licencována pod GPLv3. Kromě PHP lze technologii implementovat v jakémkoli jiném jazyce, včetně JavaScriptu/Node.js, Javy, Pythonu, Go a Ruby.

Pusa definuje výměnný protokol založený na minimalistické sadě příkazů. Když se stránka načte, prohlížeč načte podkladový obsah DOM a jádro JavaScriptu Pusa-Front. Pusa-Front odesílá události prohlížeče (jako je kliknutí, rozostření, zaměření a stisknutí klávesy) a parametry požadavku (prvek, který událost způsobil, jeho atributy, URL atd.) do obsluhy serveru Pusa-Back pomocí požadavků Ajax. Na základě přijatých dat Pusa-Back určí kontrolér, provede užitečné zatížení a vygeneruje sadu příkazů. Po obdržení odpovědi na požadavek Pusa-Front provede příkazy a změní obsah DOM a prostředí prohlížeče.

Stav frontendu je generován, ale není řízen backendem, díky čemuž je vývoj pro Pusa podobný kódu pro grafickou kartu nebo Canvas, kde výsledek provádění nekontroluje vývojář. Pro tvorbu interaktivních aplikací založených na Canvas a onmousemove je možné stáhnout a používat další JavaScript skripty na straně klienta. Mezi nevýhody metody patří také přesun části zátěže z frontendu na backend a zvýšení frekvence výměny dat se serverem.

Mezi výhody patří: eliminace potřeby účasti vývojářů front-endu JavaScriptu, stabilní a kompaktní klientský kód (11 kb), nedostupnost hlavního kódu z front-endu, není potřeba serializace REST a nástroje jako gRPC, eliminace problémy s koordinací směrování požadavků mezi front-endem a back-endem.

Zdroj: opennet.ru

Přidat komentář