Study
Yesod

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/.

Editor Latihan

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.