Śledzenie Electron
Eksport CSV.

Kliknij przycisk od strony API, przez Electron IPC, do CSV File writer.

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

  1. Renderer → preloadnotes.exportCsv()renderer.js wywołuje API narażone przez preload.js.
  2. Między procesaminotes:exportWstępne ładowanie wywołuje kanał IPC: nazwaną wiadomość do głównego procesu.
  3. Główny procesObsługi eksportumain.js obsługuje ten kanał i wywołuje pisarz CSV.

csv.js formatuje notatki → main.js pisze downloads/notes.csv.

REA dopasowuje dosłowne wywołanie IPC do jego obsługi i identyfikuje odsłonięty interfejs API. Ścieżka jest wywnioskowana z kodu; przechwytywanie środowiska wykonawczego może sprawdzić, co wykonuje.

Zapytaj o CSV export

Połącz swojego agenta z REA i daj mu katalog aplikacji lub plik ASAR:

Twój agent kodowania

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

renderer.js * przykładowe źródło
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.

preload.js * przykładowe źródło
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.

main.js * przykładowe źródło
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.

REA wynik * podsumowanie.fragment ipc
{
  "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.

Pobierz przykład ZIP

Przeglądaj sześć plików źródłowych
Statyczna analiza aplikacji
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:export do 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.

Top