Struktur Project (Routes, Foundation, Handler)
Penjelasan
Project Yesod hasil scaffolding punya beberapa file kunci: config/routes menyimpan daftar seluruh route aplikasi dalam format khusus, Foundation.hs mendefinisikan tipe data App (site foundation) beserta instance typeclass Yesod yang mengatur perilaku global seperti layout dan autentikasi, dan folder Handler/ berisi satu file per grup route yang berisi fungsi getXxxR, postXxxR, dan seterusnya sesuai method HTTP. File Application.hs bertanggung jawab menyusun semua bagian menjadi aplikasi WAI yang bisa dijalankan, termasuk memuat semua Handler lewat Template Haskell (mkYesodDispatch). Karena Yesod banyak memakai Template Haskell untuk generate kode routing otomatis dari config/routes, memahami bahwa fungsi handler dipanggil otomatis berdasarkan penamaan konvensi sangat penting sebelum menambah fitur baru.
Contoh Konsep
toko_app/
config/
routes # daftar semua route
settings.yml
src/
Foundation.hs # tipe App + instance Yesod
Application.hs # perakitan aplikasi (mkYesodDispatch)
Import.hs # re-export modul umum
Handler/
Home.hs # getHomeR
Produk.hs # getProdukR, postProdukR
Model.hs # relasi ke Persistent entity
config/models # definisi entity Persistent
Praktikum
Jelajahi project blog_app hasil scaffolding, identifikasi isi config/routes dan cocokkan dengan fungsi handler yang ada di folder Handler/.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Setiap kali menambah baris baru di config/routes, jalankan ulang stack build (atau biarkan yesod devel auto-reload) karena Template Haskell perlu regenerasi kode dispatch dari file itu.