Objavljen je Pusa web framework s implementacijom koncepta koji front-end logiku, koja se izvodi u pregledniku pomoću JavaScripta, prenosi na pozadinsku stranu - upravljanje preglednikom i DOM elementima, kao i poslovnom logikom odvija se na pozadina. JavaScript kôd koji se izvršava na strani preglednika zamjenjuje se univerzalnim slojem koji poziva rukovatelje koji se nalaze na pozadinskoj strani. Nema potrebe za razvojem pomoću JavaScripta za front end. Referentna implementacija Pusa napisana je u PHP-u i licencirana je pod GPLv3. Uz PHP, tehnologija se može implementirati u bilo koji drugi jezik, uključujući JavaScript/Node.js, Java, Python, Go i Ruby.
Pusa definira protokol razmjene temeljen na minimalističkom skupu naredbi. Kada se stranica učita, preglednik učitava temeljni DOM sadržaj i Pusa-Frontovu JavaScript jezgru. Pusa-Front šalje događaje preglednika (kao što su klik, zamućenje, fokus i pritisak na tipku) i parametre zahtjeva (element koji je uzrokovao događaj, njegove atribute, URL itd.) Pusa-Back poslužitelju za rukovanje koristeći Ajax zahtjeve. Na temelju primljenih podataka, Pusa-Back određuje kontroler, izvršava korisni teret i generira skup odgovora naredbi. Nakon što primi odgovor na zahtjev, Pusa-Front izvršava naredbe, mijenjajući sadržaj DOM-a i okruženje preglednika.
Stanje frontenda generira, ali ga ne kontrolira backend, što razvoj za Pusu čini sličnim kodu za grafičku karticu ili Canvas, gdje rezultat izvršavanja ne kontrolira programer. Za izradu interaktivnih aplikacija temeljenih na Canvasu i onmousemoveu, moguće je učitati i koristiti dodatne JavaScript skripte na strani klijenta. Nedostaci ove metode također uključuju premještanje dijela opterećenja s frontenda na backend i povećanje učestalosti razmjene podataka. poslužitelja.
Među prednostima su: eliminacija potrebe za sudjelovanjem JavaScript front-end programera, stabilan i kompaktan klijentski kod (11 kb), nedostupnost glavnog koda s front-enda, nema potrebe za REST serijalizacijom i alatima poput gRPC-a, eliminacija problemi koordinacije usmjeravanja zahtjeva između front-end-a i back-end-a.
Izvor: opennet.ru
