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

Дадаць каментар