Обявен е уеб фреймворк Pusa с реализиране на концепция, която прехвърля логиката на фронтенда, изпълнявана в браузъра с помощта на JavaScript, на страна на бекенда — управлението на браузъра и DOM елементите, както и бизнес логиката се изпълняват на бекенда. Кодът на JavaScript, изпълняван на страната на браузъра, се заменя с универсален слой, който извиква обработвачи, разположени на страната на бекенда. Необходимостта от разработка с JavaScript за фронтенда е отсъстваща. Примерната реализация на Pusa е написана на езика PHP и се разпространява под лицензия GPLv3. Освен PHP, технологията може да бъде реализирана на всеки друг език, включително JavaScript/Node.js, Java, Python, Go и Ruby.
Pusa определя протокол за обмен въз основа на минималистичен набор команди. При зареждане на страницата браузърът зарежда основното съдържание на DOM и JavaScript ядрото на Pusa-Front. Pusa-Front чрез Ajax заявки насочва събитията на браузъра (като click, blur, focus и keypress) и параметрите на заявката (елементът, предизвикал събитието, неговите атрибути, URL и т.н.) към сървърния обработчик Pusa-Back. На основата на получените данни Pusa-Back определя контролера, изпълнява полезната нагрузка и формулира отговорен набор команди. След получаване на отговора на заявката Pusa-Front изпълнява командите, променяйки съдържанието на DOM и средата на браузъра.
Състоянието на фронтенда се формира, но не се контролира от бекенда, което прави разработката за Pusa подобна на кода за видеокарта или Canvas, където резултатът от изпълнението не се контролира от разработчика. За създаване на интерактивни приложения на базата на Canvas и onmousemove е предвидена възможност за зареждане и използване на допълнителни JavaScript скриптове на страната на клиента. Сред недостатъците на метода се отбелязва прехвърлянето на част от натоварването от фронтенда на бекенда и увеличаването на честотата на обмен на данни с. сървъра..
Сред предимствата открояват: изключване на необходимостта от участие на JavaScript разработчици за фронтенда, стабилен и компактен клиентски код (11 кб), недостъпност на основния код от страната на фронтенда, отсъствие на необходимост от сериализация REST и средства като gRPC, изключване на проблемите с координацията на маршрутизацията на заявките между фронтенда и бекенда.
Източник: opennet.ru
