Jendela tambahan
Setelah Nexa.js dimuat, NXUI.NexaElectron (alias NXUI.Electron) membuka route SPA di BrowserWindow baru, menyelaraskan opsi layout dengan mainWindowLayout di electron/electronShell.js, dan meneruskan data lewat WindowPayload.
Electron · Express · NexaJS
Ringkasan alur
-
Renderer memanggil misalnya
NXUI.NexaElectron.bindRouteLink(...)atauNXUI.Electron.openRouteWindow('/rute', { … }). -
Preload
electronAPI.openRouteWindow→ IPCnexa-open-route-window. -
electron/main.jsmemvalidasi path, menggabungkan layout, menambah?nexaHandoff=…bila ada payload, laluloadURLdi jendela sekunder.
API renderer (tanpa import terpisah)
| API | Keterangan |
|---|---|
NXUI.NexaElectron.isAvailable() |
true jika window.electronAPI.openRouteWindow ada. |
NXUI.NexaElectron.bindRouteLink(container, selector, options) |
Klik tautan → jendela baru. Opsi: route, kunci layout datar
(width, height, ContextMenu, …),
data / windowPayload, preset,
layout.
|
NXUI.Electron.openRouteWindow(path, options) |
Membuka jendela secara programatis (tanpa klik). |
NXUI.NexaElectron.WindowPayload() |
Di route target: baca handoff dari localStorage, hapus kunci, dan
bersihkan query URL.
|
NXUI.ROUTE_WINDOW_LAYOUT_SHELL (dan
_COMPACT, ROUTE_WINDOW_HANDOFF_PREFIX)
|
Konstanta layout / prefix handoff. |
data-nexa-electron-window pada
<a> agar delegasi klik NexaRoute di
document tidak memanggil stopPropagation sebelum handler
Anda — hanya jika electronAPI.openRouteWindow ada; di browser biasa
navigasi SPA tetap normal.
Handoff data / windowPayload
Objek yang dapat di-serialize JSON ditulis ke
localStorage (bukan sessionStorage; tiap
jendela top-level punya session terpisah). Halaman tujuan memanggil
WindowPayload() sekali saat route dimuat.
Contoh singkat
NXUI.NexaElectron.bindRouteLink(container, '#buka-sekunder', {
route: '/contoh',
width: 960,
height: 700,
data: { id: 1, label: 'dari induk' },
});
// Di halaman /contoh:
const payload = NXUI.NexaElectron.WindowPayload();
if (payload != null) console.log(payload);
Implementasi modul renderer ada di
assets/modules/Electron/NexaElectron.js (disematkan
sebagai NXUI.NexaElectron dari Nexa.js). Perilaku menu
konteks per jendela sekunder dan sanitasi layout mengikuti
electron/main.js.