Byl zveřejněn webový rámec Pusa, který implementuje koncepci, jež přesouvá logiku front-endu, prováděnou v prohlížeči pomocí JavaScriptu, na stranu backendu — řízení prohlížeče a prvků DOM, stejně jako obchodní logika se provádí na backendu. JavaScriptový kód prováděný na straně prohlížeče je nahrazen univerzální vrstvou, která vyvolává zpracovatele na straně backendu. Není nutné vyvíjet front-end pomocí JavaScriptu. Referenční implementace Pusa je napsána v PHP a šíří se pod licencí GPLv3. Kromě PHP lze technologii implementovat v jakémkoli jiném jazyce, včetně JavaScript/Node.js, Java, Python, Go a Ruby.
Pusa určuje protokol výměny na základě minimalistické sady příkazů. Při načtení stránky prohlížeč načte základní obsah DOM a JavaScriptové jádro Pusa-Front. Pusa-Front prostřednictvím Ajaxových požadavků odesílá události prohlížeče (jako kliknutí, ztráta zaměření, získání zaměření a stisk klávesy) a parametry požadavku (prvek, který událost vyvolal, jeho atributy, URL atd.) do serverového zpracovatele Pusa-Back. Na základě přijatých dat Pusa-Back určuje kontroler, vykonává užitečnou zátěž a vytváří příslušný soubor příkazů. Po přijetí odpovědi na požadavek Pusa-Front vykonává příkazy, mění obsah DOM a prostředí prohlížeče.
Stav front-endu je formován, ale nekontrolován backendem, což činí vývoj pro Pusa podobným kódu pro grafickou kartu nebo Canvas, kde výsledek vykonání není kontrolován vývojářem. Pro vytváření interaktivních aplikací na základě Canvas a onmousemove je uvedena možnost načítání a používání dalších JavaScriptových skriptů na straně klienta. Mezi nevýhody metody patří také přesun části zátěže z front-endu na backend a zvýšení četnosti výměny dat. serverem.
Mezi výhody patří: vyloučení nutnosti zapojení JavaScriptových vývojářů front-endu, stabilní a kompaktní klientský kód (11 kB), nedostupnost hlavního kódu ze strany front-endu, absence nutnosti serializace REST a nástrojů jako gRPC, vyloučení problémů se shodou směrování požadavků mezi front-endem a backendem.
Zdroj: opennet.ru
