Aplikasi Web Satu Halaman dapat menampilkan konten yang berbeda tanpa memuat halaman baru. Untuk melakukannya, mereka menggunakan pengendali klik pada link dan History API. History API memungkinkan manipulasi histori sesi browser. Dengan cara ini, kita dapat memperbarui URL saat menampilkan halaman yang berbeda (biasanya disebut "tampilan" di Aplikasi Web Satu Halaman). Tindakan ini juga memastikan tombol kembali di browser masih berfungsi seperti yang diharapkan.
Lihat Aplikasi Web Satu Halaman di codelab ini. Menampilkan gambar kucing atau dan menyediakan link untuk beralih antara kedua hewan. Sepertinya berfungsi dengan baik.
Mengungkap 404 yang licik
Sayangnya, ada bug halus di aplikasi. Mari kita lihat.
- Untuk melihat pratinjau situs, tekan Lihat Aplikasi. Kemudian tekan Layar Penuh .
- Klik link Doggos. Perhatikan bagaimana URL berubah.
- Muat ulang aplikasi.
Anda mendapatkan halaman yang berisi "Cannot GET /doggos
"—404 tersembunyi. Hal ini "licik",
karena aplikasi web tampaknya berfungsi dengan baik selama Anda hanya mengklik link di
dalamnya. URL akan rusak saat menggunakan URL di jendela browser baru atau saat memuat ulang halaman. Masalahnya adalah server tidak tahu cara merespons permintaan untuk
URL ini. Kode JavaScript di aplikasi web kita menggunakan History API untuk
menavigasi di antaranya, tetapi server tidak tahu apa yang harus dilakukan dengan URL tersebut.
Setiap kali server tidak tahu apa yang harus dilakukan untuk URL yang diminta, server akan merespons
dengan kode status HTTP 404
. Dengan kode ini, server menyatakan bahwa server belum menemukan
apa pun untuk URL yang diminta.
Dalam hal ini, mesin telusur tidak akan mengindeks URL karena pengguna akan mengklik hasil penelusuran dan menemukan pesan error, tetapi bukan konten yang mereka cari, seperti gambar anjing.
Memperbaiki server
Project ini menggunakan server express.js yang ditulis dalam JavaScript. Mari kita perbaiki server agar merespons dengan index.html dan aplikasi satu halaman akan menangani sisanya.
- Klik Remix to Edit agar project dapat diedit.
- Pilih file
server.js
.
File ini berisi kode server. Fungsi ini menyiapkan server express.js dan mengirim konten index.html. Penyiapan rute di baris 15 hanya menayangkan aplikasi web
saat permintaan diarahkan ke URL /
. Server juga harus menayangkan URL lain yang telah kita
buat. Mari kita ubah ini untuk menayangkan semua URL, sehingga juga berfungsi dengan
URL tambahan pada masa mendatang.
Untuk melakukannya, kita dapat mengubah kode mulai dari baris 15 menjadi ini:
app.get('/*', function(request, response) {
response.sendFile(__dirname + '/views/index.html');
});
/*
cocok dengan URL apa pun dan server kini merespons dengan aplikasi web di
index.html
untuk URL tertentu.
- Untuk melihat pratinjau situs, tekan View App. Lalu, tekan Fullscreen .
Memuat ulang dan membuka link di jendela samaran baru kini akan berfungsi seperti yang diharapkan.