Khung web Pusa chuyển logic giao diện người dùng JavaScript sang phía máy chủ

Khung web Pusa đã được xuất bản với việc triển khai một khái niệm chuyển logic giao diện người dùng, được thực thi trong trình duyệt bằng JavaScript, sang phía back-end - quản lý trình duyệt và các thành phần DOM, cũng như logic nghiệp vụ được thực hiện trên phần cuối. Mã JavaScript được thực thi ở phía trình duyệt được thay thế bằng một lớp phổ quát gọi các trình xử lý nằm ở phía phụ trợ. Không cần phát triển bằng JavaScript cho giao diện người dùng. Việc triển khai tham chiếu Pusa được viết bằng PHP và được cấp phép theo GPLv3. Ngoài PHP, công nghệ này có thể được triển khai bằng bất kỳ ngôn ngữ nào khác, bao gồm JavaScript/Node.js, Java, Python, Go và Ruby.

Pusa định nghĩa một giao thức trao đổi dựa trên một tập lệnh tối giản. Khi tải trang, trình duyệt sẽ tải nội dung DOM cơ bản và lõi JavaScript của Pusa-Front. Pusa-Front gửi các sự kiện của trình duyệt (chẳng hạn như nhấp chuột, làm mờ, tiêu điểm và nhấn phím) và các tham số yêu cầu (yếu tố gây ra sự kiện, thuộc tính, URL, v.v.) đến trình xử lý máy chủ Pusa-Back bằng cách sử dụng các yêu cầu Ajax. Dựa trên dữ liệu nhận được, Pusa-Back xác định bộ điều khiển, thực thi tải trọng và tạo ra một bộ lệnh phản hồi. Sau khi nhận được phản hồi yêu cầu, Pusa-Front thực thi các lệnh, thay đổi nội dung của DOM và môi trường trình duyệt.

Trạng thái của giao diện người dùng được tạo nhưng không được kiểm soát bởi phần phụ trợ, điều này làm cho việc phát triển Pusa tương tự như mã dành cho thẻ video hoặc Canvas, trong đó kết quả thực thi không được nhà phát triển kiểm soát. Để tạo các ứng dụng tương tác dựa trên Canvas và onmousemove, có thể tải xuống và sử dụng các tập lệnh JavaScript bổ sung ở phía máy khách. Trong số những nhược điểm của phương pháp, còn có việc chuyển một phần tải từ frontend sang backend và tăng tần suất trao đổi dữ liệu với máy chủ.

Trong số các ưu điểm là: loại bỏ nhu cầu tham gia của các nhà phát triển giao diện người dùng JavaScript, mã máy khách ổn định và nhỏ gọn (11kb), không thể truy cập mã chính từ giao diện người dùng, không cần tuần tự hóa REST và các công cụ như gRPC, loại bỏ vấn đề phối hợp định tuyến yêu cầu giữa front-end và back-end.

Nguồn: opennet.ru

Thêm một lời nhận xét