El framework web Pusa s'ha publicat amb la implementació d'un concepte que transfereix la lògica front-end, executada al navegador mitjançant JavaScript, a la part posterior: la gestió del navegador i els elements DOM, així com la lògica de negoci es realitzen en el back-end. El codi JavaScript executat a la part del navegador es substitueix per una capa universal que crida als controladors situats a la part posterior. No cal desenvolupar amb JavaScript per al front end. La implementació de referència de Pusa està escrita en PHP i té llicència sota la GPLv3. A més de PHP, la tecnologia es pot implementar en qualsevol altre llenguatge, inclosos JavaScript/Node.js, Java, Python, Go i Ruby.
Pusa defineix un protocol d'intercanvi basat en un conjunt minimalista d'ordres. Quan es carrega la pàgina, el navegador carrega el contingut DOM subjacent i el nucli de JavaScript de Pusa-Front. Pusa-Front envia esdeveniments del navegador (com ara clic, desenfocament, focus i premsa de tecles) i paràmetres de sol·licitud (l'element que va provocar l'esdeveniment, els seus atributs, URL, etc.) al gestor del servidor Pusa-Back mitjançant sol·licituds Ajax. A partir de les dades rebudes, Pusa-Back determina el controlador, executa la càrrega útil i genera un conjunt d'ordres de resposta. Després d'haver rebut la resposta a la sol·licitud, Pusa-Front executa ordres, canviant el contingut del DOM i l'entorn del navegador.
L'estat del frontend es genera però no el controla el backend, cosa que fa que el desenvolupament per a Pusa sigui similar a la codificació per a una targeta de vídeo o Canvas, on el resultat de l'execució no el controla el desenvolupador. Per crear aplicacions interactives basades en Canvas i onmousemove, és possible carregar i utilitzar scripts JavaScript addicionals al costat del client. Els desavantatges d'aquest mètode també inclouen el desplaçament d'una part de la càrrega del frontend al backend i l'augment de la freqüència d'intercanvi de dades. servidor.
Entre els avantatges es troben: eliminació de la necessitat de la participació de desenvolupadors de JavaScript front-end, codi de client estable i compacte (11kb), inaccessibilitat del codi principal des de la interfície, no necessitat de serialització REST i eines com gRPC, eliminant el problemes de coordinació de l'encaminament de sol·licituds entre el front-end i el back-end.
Font: opennet.ru
