Pusa уеб рамка, която прехвърля логиката на предния край на JavaScript към страната на сървъра

Уеб рамката на Pusa е публикувана с внедряването на концепция, която прехвърля логиката на предния край, изпълнена в браузъра с помощта на JavaScript, към задната страна - управлението на браузъра и DOM елементите, както и бизнес логиката се извършват на задната част. Кодът на JavaScript, изпълняван от страната на браузъра, се заменя с универсален слой, който извиква манипулатори, разположени от страната на бекенда. Няма нужда да се разработва с помощта на JavaScript за предния край. Референтната реализация на Pusa е написана на PHP и е лицензирана под GPLv3. В допълнение към PHP, технологията може да бъде внедрена на всеки друг език, включително JavaScript/Node.js, Java, Python, Go и Ruby.

Pusa дефинира протокол за обмен, базиран на минималистичен набор от команди. Когато страницата се зареди, браузърът зарежда основното DOM съдържание и JavaScript ядрото на Pusa-Front. Pusa-Front изпраща събития на браузъра (като щракване, замъгляване, фокусиране и натискане на клавиш) и параметри на заявката (елементът, който е причинил събитието, неговите атрибути, URL адрес и т.н.) към сървърния манипулатор на Pusa-Back, използвайки Ajax заявки. Въз основа на получените данни Pusa-Back определя контролера, изпълнява полезния товар и генерира набор от команди за отговор. След като получи отговор на заявката, Pusa-Front изпълнява команди, променяйки съдържанието на DOM и средата на браузъра.

Състоянието на фронтенда се генерира, но не се контролира от бекенда, което прави разработката за Pusa подобна на кода за видеокарта или Canvas, където резултатът от изпълнението не се контролира от разработчика. За създаване на интерактивни приложения, базирани на Canvas и onmousemove, е възможно да изтеглите и използвате допълнителни JavaScript скриптове от страна на клиента. Сред недостатъците на метода има и прехвърляне на част от натоварването от фронтенда към бекенда и увеличаване на честотата на обмен на данни със сървъра.

Сред предимствата са: елиминиране на необходимостта от участие на разработчици на предния край на JavaScript, стабилен и компактен клиентски код (11kb), недостъпност на основния код от предния край, липса на нужда от REST сериализация и инструменти като gRPC, премахване на проблеми с координирането на маршрутизирането на заявки между предния и задния край.

Източник: opennet.ru

Добавяне на нов коментар