È stato pubblicato il framework web Pusa, che porta la logica del frontend, eseguita nel browser tramite JavaScript, sul lato backend — il controllo del browser e degli elementi DOM, così come la logica di business, vengono gestiti nel backend. Il codice JavaScript eseguito nel browser è sostituito da uno strato universale che chiama i gestori presenti nel backend. Non è necessaria la development con JavaScript per il frontend. L'implementazione di riferimento di Pusa è scritta in PHP ed è distribuita sotto licenza GPLv3. Oltre a PHP, la tecnologia può essere implementata in qualsiasi altro linguaggio, inclusi JavaScript/Node.js, Java, Python, Go e Ruby.
Pusa definisce un protocollo di scambio basato su un insieme minimalista di comandi. Durante il caricamento della pagina, il browser carica il contenuto di base del DOM e il nucleo JavaScript Pusa-Front. Pusa-Front, tramite richieste Ajax, invia eventi del browser (come click, blur, focus e keypress) e parametri di richiesta (l'elemento che ha generato l'evento, i suoi attributi, URL, ecc.) al gestore server Pusa-Back. In base ai dati ricevuti, Pusa-Back determina il controller, esegue il payload e forma un insieme di comandi di risposta. Ricevuta la risposta alla richiesta, Pusa-Front esegue i comandi, modificando il contenuto del DOM e l'ambiente del browser.
Lo stato del frontend si forma ma non è controllato dal backend, il che rende lo sviluppo per Pusa simile a quello per schede grafiche o Canvas, dove il risultato dell'esecuzione non è controllato dallo sviluppatore. Per creare applicazioni interattive basate su Canvas e onmousemove, è prevista la possibilità di caricare e utilizzare script JavaScript aggiuntivi lato client. Tra i svantaggi del metodo si segnala anche il trasferimento parziale del carico dal frontend al backend e l'aumento della frequenza di scambio dati. server.
I vantaggi includono: l'eliminazione della necessità di sviluppatori JavaScript per il front-end, un codice client stabile e compatto (11kB), l'inaccessibilità del codice sorgente dal front-end, l'assenza di necessità di serializzazione REST e di strumenti come gRPC, e l'eliminazione dei problemi di sincronizzazione delle richieste tra front-end e back-end.
Fonte: opennet.ru
