Framework PHP yang mendukung SPA

Saya saat ini sedang mengembangkan sebuah PHP framework yang mendukung penuh terhadap sistem SPA. Saya sebelumnya telah mengembangkan PHP framework yang masih menggunakan metode pemuatan halaman penuh. Bagian dari halaman web yang sebenarnya tidak perlu dimuat lagi karena di setiap halaman, bagian itu pasti ada, contohnya adalah menu navigasi dan widget yang dipasang di sidebar. Selain itu, bagian yang tidak terlihat oleh mata telanjang, contohnya berkas CSS dan Javascript yang digunakan untuk melengkapi halaman web. Dengan SPA, pemuatan bagian ini hanya dilakukan di awal web dibuka. Setelah itu, hanya bagian inti yang ingin ditampilkan saja yang akan diproses.

Apa itu SPA?

SPA adalah singkatan dari Single-Page Application, yaitu aplikasi berbasis web yang hanya mengandalkan satu halaman untuk menjalankan sistem. Pada umumnya, jika menggunakan PHP, setiap kali menklik link, maka halaman akan dimuat keseluruhan. Sedangkan SPA ini, halaman tidak dimuat keseluruhan, melainkan hanya bagian yang diperlukan saja. Hal ini membuat SPA lebih unggul dalam hal kecepatan memuat halaman web.

Sistem SPA yang Saya Kembangkan

Komponen utama yang digunakan oleh SPA adalah Javascript dan AJAX. AJAX adalah metode bagaimana client-side mengirimkan permintaan kepada server tanpa harus memuat keseluruhan halaman. Ketika link diklik, maka proses ditahan untuk tidak memuat halaman itu, melainkan melakukan permintaan ke server melalui belakang layar (background process). Bahasa pemrograman server-side seperti PHP tetap dibutuhkan dalam SPA. Ini bertujuan untuk menyembunyikan data dan proses terhadap user, misalnya basis data dan logika proses yang digunakan untuk mengembangkan aplikasi web.

Permintaan yang dikirimkan melalui belakang layar ini kemudian diproses menggunakan PHP. Tidak peduli bagaimana proses yang dilakukan, yang penting output yang dikeluarkan harus JSON (Javascript Object Notation). Dulunya yang digunakan adalah XML (Extensible Markup Language). Karena format JSON lebih menghemat karakter jika dibandingkan dengan XML, maka JSON saat ini lebih populer.

JSON yang diumpankan melalui AJAX ini kemudian diproses oleh DOM (Document Object Model) engine yang berupa Javascript. Jadi, pada framework ini, proses rendering pada view tidak lagi dilakukan oleh server, melainkan dilakukan oleh client-side. Dengan begitu, beban server dapat dikurangi. Perkembangan teknologi Javascript saat ini begitu signifikan semenjak Google mengembangkan JVM (Javascript Virtual Machine). Bahkan saat ini, JVM ini digunakan oleh NodeJS sebagai server-side. Sebenarnya ingin mencoba beralih ke NodeJS, akan tetapi belum semua server hosting saat ini menyediakan servis NodeJS. Oleh karena itu, saya saat ini mengembangkan framework baru ini untuk menunjukkan bahwa masih ada framework PHP yang dapat digunakan untuk membuat web yang menggunakan SPA.

Tidak peduli arsitekturnya MVC (Model-View-Controller) ataupun HMVC (Hierarchical Model-View-Controller), bagian view bukan lagi ditanggung oleh server. Bagian server hanya mengerjakan bagian controller dan model. Jadi, pada bagian view itu sudah tidak ada lagi kode PHP, baik itu perintah untuk menampilkan output maupun kontrol proses. Bahkan kini berkas view tidak menggunakan ekstensi *.php, melainkan menggunakan ekstensi *.htm. Itu sudah cukup memperjelas bahwa server sudah tidak ada campur tangan sama sekali pada bagian view.

Bagaimana Data dari Server Ditampilkan ke View?

Untuk menampilkan data dari server ke view, dibutuhkan bantuan DOM. Pada client-side, manipulasi DOM dapat dengan mudah dilakukan dengan Javascript. Pada framework ini, saya menggunakan library jQuery untuk memenuhi kebutuhan itu. Untuk melakukan manipulasi DOM, yang dibutuhkan hanyalah selector, bisa berupa id, class, ataupun atribut lainnya.

Hal yang banyak dikeluhkan adalah kekurangan SPA itu sendiri, diantaranya adalah halaman yang menggunakan SPA tidak begitu familiar terhadap mesin pencari. Karena halaman yang diakses oleh mesin pencari tidak mengandung konten dari halaman web yang seharusnya. Itu dikarenakan mesin pencari tidak memuat halaman web seperti kita membuka halaman melalui browser, melainkan memuat halaman secara mentah. Itu berarti, tidak ada eksekusi Javascript yang dilakukan, sedangkan SPA ini mesin utamanya adalah Javascript. Jadinya konten utama halaman tidak termuat oleh mesin pencari. Akibatnya dari segi SEO (Search Engine Optimization) web akan menjadi rendah rankingnya.

Guna mengatasi kekurangan itu, pada server-side juga harus dilakukan manipulasi DOM. Pada PHP sudah ada kelas yang digunakan untuk memanipulasi DOM. Antara manipulasi DOM yang dilakukan oleh Javascript harus dibuat sama persis dengan manipulasi DOM yang dilakukan oleh server-side. Pada framework yang sedang saya kembangkan, hal tersebut sudah dapat dilakukan. Jadi, ketika halaman direfresh ataupun diklik kanan untuk dibuka pada tab baru, maka hasil muat halaman sama persis ketika dimuat melalui SPA. Jadi, dapat dipastikan web menjadi familiar terhadap mesin pencari. Mungkin dapat dikatakan, dengan menggunakan framework ini, web menjadi setengah SPA dan setengah konvensional.

Framework ini masih terus diuji kehandalannya sebelum disebarkan. Saya juga masih melihat minat developer terhadap framework PHP yang mendukung SPA. Saya bisa berikan contoh website yang menggunakan metode SPA, yaitu Google dan Twitter.

comments powered by Disqus