Rangka kerja web Pusa yang memindahkan logik bahagian hadapan JavaScript ke bahagian pelayan

Rangka kerja web Pusa telah diterbitkan dengan pelaksanaan konsep yang memindahkan logik bahagian hadapan, dilaksanakan dalam penyemak imbas menggunakan JavaScript, ke bahagian belakang - mengurus pelayar dan elemen DOM, serta logik perniagaan dilakukan pada bahagian belakang. Kod JavaScript yang dilaksanakan pada bahagian penyemak imbas digantikan dengan lapisan universal yang memanggil pengendali yang terletak di bahagian belakang. Tidak perlu membangunkan menggunakan JavaScript untuk bahagian hadapan. Pelaksanaan rujukan Pusa ditulis dalam PHP dan dilesenkan di bawah GPLv3. Selain PHP, teknologi ini boleh dilaksanakan dalam mana-mana bahasa lain, termasuk JavaScript/Node.js, Java, Python, Go dan Ruby.

Pusa mentakrifkan protokol pertukaran berdasarkan set arahan minimalis. Apabila halaman dimuatkan, penyemak imbas memuatkan kandungan DOM asas dan teras JavaScript Pusa-Front. Pusa-Front menghantar peristiwa penyemak imbas (seperti klik, kabur, fokus dan tekan kekunci) dan parameter permintaan (elemen yang menyebabkan peristiwa, atributnya, URL, dll.) kepada pengendali pelayan Pusa-Back menggunakan permintaan Ajax. Berdasarkan data yang diterima, Pusa-Back menentukan pengawal, melaksanakan muatan dan menjana set tindak balas arahan. Setelah menerima respons permintaan, Pusa-Front melaksanakan arahan, menukar kandungan DOM dan persekitaran penyemak imbas.

Keadaan bahagian hadapan dijana tetapi tidak dikawal oleh bahagian belakang, yang menjadikan pembangunan untuk Pusa serupa dengan kod untuk kad video atau Kanvas, di mana hasil pelaksanaan tidak dikawal oleh pembangun. Untuk mencipta aplikasi interaktif berdasarkan Kanvas dan onmousemove, anda boleh memuat turun dan menggunakan skrip JavaScript tambahan pada bahagian klien. Antara kelemahan kaedah, terdapat juga pemindahan sebahagian daripada beban dari bahagian hadapan ke bahagian belakang dan peningkatan kekerapan pertukaran data dengan pelayan.

Antara kelebihannya ialah: menghapuskan keperluan untuk penyertaan pembangun bahagian hadapan JavaScript, kod pelanggan yang stabil dan padat (11kb), ketidakbolehcapaian kod utama dari bahagian hadapan, tidak memerlukan pensirian REST dan alat seperti gRPC, menghapuskan masalah menyelaraskan penghalaan permintaan antara front-end dan back-end.

Sumber: opennet.ru

Tambah komen