Web-фреймворк Pusa, що переносить логіку JavaScript-фронтенда на сторону сервера

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

Pusа визначає протокол обміну з урахуванням мінімалістичного набору команд. Під час завантаження сторінки браузер завантажує базовий вміст 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

Додати коментар або відгук