Menggabungkan Data dengan Template
- Membuat file baru dengan nama renderer.js
- Kemudian membuat fungsi baru untuk menerima template, data, dan response yang akan kita berikan, function view(templateName, value, response)
- Lalu cari di dokumentasi mengenai fs.readFile dan salin kode tersebut kedalam fungsi yang telah dibuat sebelumnya
- Arahkan uri ke arah file html yang telah kita buat sebelumnya, menjadi uri + templateName + .html
- Lalu tulis response dengan memberikan data hasil membaca file tersebut.
- Exports fungsi ke global dengan module.exports.view = view
- Pada router.js, import renderer.js dan panggil fungsi view di dalam renderer tersebut di dalam homeRoute() untuk memberikan response ke browser
- Coba jalankan file tersebut dengan node, dan akses home
- File tidak dapat diakses karena butuh waktu untuk membaca file sehingga, sebelum file dapat terbaca, server sudah memberika response.end() . Semua terjadi karena pembacaan file dilakukan secara async. Kadang adakalanya kita ingin menginginkan proses menjadi sync, sehingga kita mengubah kode pembacaan menjadi fs.readFileSync()
- Kemudian tambahkan pecahan file website kita tadi menjadi beberapa renderer.view('header', {}, response), renderer.view('body', ...), dan renderer.view('footer', ...)
- Selanjutnya, pada bagian userRoute() karena akan ada data yang di proses, maka parameter values dikirimkan sebagai argumen fungsi, renderer.view('body', values, response).
- Jangan lupa menambahkan response.end() di setiap ujung response.write()