Gdzie idzie "Eksportuj notatki"?
Ten przewodnik używa małej aplikacji Electron. Klikanie Eksportuj notatki wywołuje API na stronie, przechodzi do głównego procesu i zapisuje CSV . Zachowanie jest rozłożone na kilka plików.
Eksport CSV w procesach Electron
-
Renderer → preload
notes.exportCsv()renderer.jswywołuje API narażone przezpreload.js. -
Między procesami
notes:exportWstępne ładowanie wywołuje kanał IPC: nazwaną wiadomość do głównego procesu. -
Główny procesObsługi eksportu
main.jsobsługuje ten kanał i wywołuje pisarz CSV.
csv.js formatuje notatki → main.js pisze downloads/notes.csv.
Zapytaj o CSV export
Połącz swojego agenta z REA i daj mu katalog aplikacji lub plik ASAR:
Użyj REA, aby dowiedzieć się, co się dzieje, gdy eksportuję notatki w tej aplikacji. Gdzie jest tworzony CSV?
Przykładowy monit. Dołącz bezwzględną ścieżkę do folderu aplikacji lub app.asar.
REA odczytuje pliki aplikacji i tworzy mapę punktów wejścia, modułów i granic procesów. Twój agent używa tej mapy, aby zawęzić dochodzenie do funkcji eksportu.
Śledzenie kodu eksportu
Strona wywołuje mały interfejs API
document.querySelector("#export").addEventListener("click", async () => {
const destination = await window.notes.exportCsv();
document.querySelector("#status").textContent = `Saved to ${destination}`;
});
Strona zna nazwę metody. Implementacja żyje w obciążeniu wstępnym, co ujawnia ją rendererowi.
contextBridge.exposeInMainWorld("notes", {
exportCsv: () => ipcRenderer.invoke("notes:export"),
});
REA records notes.exportCsv i dosłowny kanał notes:export. Łączy to wywołanie z pojedynczą obsługą dopasowania w głównym procesie.
ipcMain.handle("notes:export", () => {
const destination = path.join(app.getPath("downloads"), "notes.csv");
writeFileSync(destination, toCsv(notes), "utf8");
return destination;
});
Czytanie obsługi odpowiada na pierwotne pytanie: csv.js formatuje notatki, a główny proces zapisuje notes.csv do folderu Pobrane użytkownika.
{
"literal_channels": 1,
"renderer_transmissions": 1,
"main_handlers": 1,
"paired_renderer_transmissions": 1,
"ambiguous_renderer_transmissions": 0
}
Nagrane przez REA 4.1.0 na poniższym przykładzie do pobrania. Lokalizacje źródłowe towarzyszą ustaleniom API, kanału i obsługi.
Przeanalizuj sam przykład
Pobierz przykład i rozpakuj go. Archiwum zawiera kompletne notes-example folder. Przeanalizuj to za pomocą Node.js oraz npm; Electron nie jest potrzebny w tym przykładzie.
Przeglądaj sześć plików źródłowych
npx -y rea-agents@latest analyze-javascript-application \
/absolute/path/to/notes-example --json
Zastąp ścieżkę rozpakowanym folderem. Powinieneś znaleźć jeden kanał IPC i jeden pasujący program obsługi w normalized_result.summary.ipc. Lokalizacje źródłowe znajdują się w normalized_result.graph.
W przypadku własnej aplikacji Użyj tego samego polecenia z jej katalogiem lub ścieżką ASAR. Agent może śledzić dosłowny ciąg znaków, nazwę API lub kanał IPC za pomocą narzędzi do śledzenia funkcji REA.
Sprawdź pisarz CSV
Follow
notes:exportdo jego obsługi. Które Dane wejściowe docierają do pisarza CSV i co się stanie, jeśli zapisanie pliku nie powiedzie się?
Użyj lokalizacji źródłowych, aby sprawdzić te szczegóły. Obliczone nazwy kanałów i niejednoznaczne procedury obsługi mogą pozostać nierozwiązane; obserwacje w czasie wykonywania dają inny sposób ich zbadania.
- Śledź Notion ' s clipboard bridge Zastosuj to samo podejście do spakowanej aplikacji Electron.
- Obserwuj eksport przeglądarkiUchwyć prawdziwe kliknięcie i zobacz, które żądanie wysyła.
- Postępuj zgodnie z natywną funkcjąPrzejdź do pliku binarnego, gdy funkcja zależy od kodu natywnego.