Простежте експорт Electron
CSV.

Виконайте натискання кнопки на сторінці API, через Electron IPC, для запису файлів CSV.

Куди дівається "експорт нотаток"?

У цьому посібнику використовується невеликий додаток Electron. При натисканні кнопки Експортувати нотатки викликається API на сторінці, виконується перехід до основного процесу і записується CSV . Поведінка розподілена по декількох файлах.

Експорт CSV в рамках процесів Electron

  1. Візуалізатор → попереднє завантаженняnotes.exportCsv()renderer.js викликає API, наданий за допомогою preload.js.
  2. Примітки: при експорті попереднього завантаження викликається IPC-канал: іменоване повідомлення для основного процесуnotes:export.
  3. Основний процес - обробник експортуmain.js main.js обробляє цей канал і викликає CSV writer.

csv.js форматує нотатки → main.js записує файли для downloads/notes.csv.

REA відображає буквальний виклик IPC до свого обробника та ідентифікує відкритий API. Шлях виводиться з коду; під час перехоплення під час виконання можна перевірити, що виконується.

Запитайте про експорт CSV

Підключіть свій агент до REA і передайте йому каталог програм або файл ASAR:

Ваш кодуючий агент

Використовуйте REA, щоб побачити, що відбувається, коли я експортую нотатки до цієї програми. Де створено CSV?

Приклад запиту. Вкажіть абсолютний шлях до папки програми або app.asar.

REA зчитує файли програми та створює карту точок входу, модулів та меж процесів. Ваш агент використовує цю карту, щоб звузити пошук до функції експорту.

Відстеження експортного коду

Сторінка викликає невеликий API

renderer.js * приклад джерела
document.querySelector("#export").addEventListener("click", async () => {
  const destination = await window.notes.exportCsv();
  document.querySelector("#status").textContent = `Saved to ${destination}`;
});

Сторінці відомо ім'я методу. Реалізація знаходиться в попередньому завантаженні, яка надає її в розпорядження засоби візуалізації.

preload.js * приклад джерела
contextBridge.exposeInMainWorld("notes", {
  exportCsv: () => ipcRenderer.invoke("notes:export"),
});

REA записує notes.exportCsv і буквений канал notes:export. Він пов'язує цей виклик з єдиним відповідним обробником в основному процесі.

main.js * приклад джерела
ipcMain.handle("notes:export", () => {
  const destination = path.join(app.getPath("downloads"), "notes.csv");
  writeFileSync(destination, toCsv(notes), "utf8");
  return destination;
});

Читання обробника дає відповідь на оригінальне запитання: csv.js нотатки форматуються, і основний процес записує файл notes.csv в папку завантажень користувача.

REA результат * підсумок.витяг з ipc
{
  "literal_channels": 1,
  "renderer_transmissions": 1,
  "main_handlers": 1,
  "paired_renderer_transmissions": 1,
  "ambiguous_renderer_transmissions": 0
}

Записано за допомогою REA 4.1.0 на прикладі, який можна завантажити нижче. Розташування вихідних текстів відповідає висновкам API, каналу та обробника.

Проаналізуйте цей приклад самостійно

Завантажте приклад і розпакуйте його. Архів містить повну папку з notes-example. Проаналізуйте його з Node.jsnpm; Electron для цього прикладу не потрібен.

Приклад завантаження ZIP-файлу

Перегляньте шість оригінальних файлів
Статичний аналіз додатків
npx -y rea-agents@latest analyze-javascript-application \
  /absolute/path/to/notes-example --json

Замініть шлях на папку, яку ви розпакували. Ви повинні знайти один канал IPC та один відповідний обробник у normalized_result.summary.ipc. Місця розташування джерел вказані в normalized_result.graph.

Для власної програми використовуйте ту саму команду, вказавши її каталог або шлях до ASAR. Агент може використовувати рядок літер, ІМ'Я API або канал IPC за допомогою інструментів відстеження функцій REA.

Перевірте пристрій запису CSV

Випливати notes:export в його обробник. Які вхідні дані надходять до CSV writer і що станеться, якщо запис файлу не вдасться?

Використовуйте розташування джерел для перевірки цих відомостей. Назви обчислених каналів та неоднозначні обробники можуть залишатися невирішеними; спостереження під час виконання дають вам інший спосіб їх вивчення.

Топ