Ringkasan Deno Desktop
Referensi: Deno Desktop
Sebuah build desktop mengambil server Deserve, route dan view yang sama yang berjalan di host, lalu membungkusnya dalam jendela native. deno desktop mengompilasi server beserta backend rendering menjadi satu bundle aplikasi, kemudian saat diluncurkan ia menjalankan server pada port loopback lokal dan mengarahkan webview ke sana. Jendela menampilkan halaman web biasa, halaman berbicara ke server lewat HTTP, dan server menjangkau disk serta OS melalui Deno.
Inilah gambaran yang perlu dipegang sepanjang seri ini:
DeserveDesktop.app (satu bundle)
├── webview → merender halaman, menjalankan JS browser
└── deno + deserve → router.serve() di 127.0.0.1:<port>
routes/* → handler GET, POST
views/* → template DVEFrontend dan backend tinggal dalam proses yang sama dan file yang sama. Server hanya mengikat loopback, jadi tidak ada apa pun di luar mesin yang bisa menjangkaunya. Hasilnya terbaca seperti aplikasi web dari dalam dan aplikasi native dari luar.
deno desktop tersedia mulai Deno 2.9.0 dan ditandai eksperimental, jadi permukaan API bisa bergeser antar rilis.
Mengapa Deserve Cocok
Aplikasi desktop tetap butuh routing, view engine, penanganan request, dan jalur error. Deserve sudah menyediakan semua itu, jadi build desktop memakai ulang server tanpa perubahan. Router menyajikan halaman dan API, routing berbasis file memetakan endpoint, dan view engine merender HTML. Lapisan native duduk di samping server alih-alih menggantikan bagian mana pun.
Satu detail membentuk segalanya. Halaman dan sisi Deno berbicara lewat API HTTP lokal, transport yang sama yang akan dipakai sebuah browser, yang membuat kode server identik baik berjalan di host maupun di dalam jendela. Alasan di balik pilihan itu ada di Bindings dan Jembatan HTTP.
Kompatibilitas Fitur
Sebagian besar permukaan deno desktop bekerja lewat Deserve tanpa perubahan. Beberapa item membawa syarat, dan satu tidak cocok dengan framework sama sekali. Tabel ini adalah peta untuk halaman-halaman berikutnya:
| Area | Bekerja dengan Deserve | Catatan |
|---|---|---|
| Penyajian HTTP | Ya | router.serve() mengikat port desktop dengan sendirinya |
| Rendering view | Ya | ctx.render() mengembalikan halaman seperti route mana pun |
| Jendela | Ya | BrowserWindow mengendalikan jendela native |
| Menu, tray, dock | Ya | Menu dan tray native duduk di samping server |
| Dialog | Ya | alert, confirm, prompt meresolusi secara native |
| Notifikasi | Bersyarat | Butuh bundle bertanda tangan, identifier stabil, peluncuran Finder |
| Auto-update | Ya | Deno.autoUpdate() mem-poll server rilis dari sisi Deno |
| Pelaporan error | Ya | Menangkap error tak tertangkap dan mengirim laporan JSON |
| Bindings | Tidak | win.bind() tidak bertahan pada jalur serve Deserve |
| DevTools | Terikat-backend | Tersedia pada backend CEF, bukan pada webview default |
Urutan Membaca
Seri ini bergerak dari build pertama menuju distribusi, dan tiap halaman menautkan ke berikutnya:
- Membangun Aplikasi menyiapkan blok
deno.json, menyematkan route dan view, serta memperbaiki jebakan direktori kerja. - Menyajikan UI membahas cara
router.serve()menemukan port desktop dan merender halaman. - Jendela, Menu, Tray dan Dialog merangkai cangkang native di sekitar server.
- Bindings dan Jembatan HTTP menjelaskan satu ketidakcocokan dan pola yang menggantikannya.
- Notifikasi, Auto-update dan Pelaporan Error membahas layanan runtime.
- Backend dan Distribusi menutup dengan pilihan backend, format keluaran, dan kompilasi-silang.