چارچوب وب Pusa با اجرای مفهومی منتشر شده است که منطق front-end را که در مرورگر با استفاده از جاوا اسکریپت اجرا شده است به سمت back-end منتقل می کند - مدیریت مرورگر و عناصر DOM و همچنین منطق تجاری بر روی انجام می شود. قسمت عقب کد جاوا اسکریپت اجرا شده در سمت مرورگر با یک لایه جهانی جایگزین میشود که کنترلکنندههای واقع در سمت باطن را فراخوانی میکند. نیازی به توسعه با استفاده از جاوا اسکریپت برای قسمت جلویی وجود ندارد. پیاده سازی مرجع Pusa به زبان PHP نوشته شده است و تحت مجوز GPLv3 است. علاوه بر PHP، این فناوری را می توان در هر زبان دیگری از جمله JavaScript/Node.js، Java، Python، Go و Ruby پیاده سازی کرد.
Pusa یک پروتکل مبادله را بر اساس مجموعه ای حداقلی از دستورات تعریف می کند. هنگامی که صفحه بارگیری می شود، مرورگر محتوای DOM زیرین و هسته جاوا اسکریپت Pusa-Front را بارگیری می کند. Pusa-Front رویدادهای مرورگر (مانند کلیک، محو کردن، فوکوس و فشار کلید) و پارامترهای درخواست (عنصری که باعث رویداد، ویژگیهای آن، URL و غیره شده) را با استفاده از درخواستهای Ajax به کنترل کننده سرور Pusa-Back میفرستد. بر اساس داده های دریافتی، Pusa-Back کنترل کننده را تعیین می کند، بار بار را اجرا می کند و مجموعه ای از دستورات پاسخ را تولید می کند. پس از دریافت پاسخ درخواست، Pusa-Front دستورات را اجرا می کند و محتوای DOM و محیط مرورگر را تغییر می دهد.
وضعیت فرانتاند تولید میشود اما توسط باطن کنترل نمیشود، که باعث میشود توسعه Pusa شبیه کد یک کارت ویدیو یا Canvas باشد، جایی که نتیجه اجرا توسط توسعهدهنده کنترل نمیشود. برای ایجاد برنامههای تعاملی مبتنی بر Canvas و onmousemove، میتوان اسکریپتهای جاوا اسکریپت اضافی را در سمت کلاینت دانلود و استفاده کرد. از جمله معایب روش، انتقال بخشی از بار از فرانت اند به بک اند و افزایش فرکانس تبادل اطلاعات با سرور نیز می باشد.
از جمله مزایا می توان به موارد زیر اشاره کرد: عدم نیاز به مشارکت توسعه دهندگان فرانت اند جاوا اسکریپت، کد کلاینت پایدار و فشرده (11 کیلوبایت)، عدم دسترسی به کد اصلی از فرانت اند، عدم نیاز به سریال سازی REST و ابزارهایی مانند gRPC، حذف مشکلات هماهنگی مسیریابی درخواست بین فرانت اند و بک اند.
منبع: opennet.ru