ردیابی Electron
صادرات CSV.

یک دکمه را دنبال کنید از API صفحه ، از طریق Electron IPC ، به CSV file writer کلیک کنید.

"یادداشت های صادراتی" به کجا می رود؟

این راهنما از یک برنامه کوچک Electron استفاده می کند. کلیک کردن یادداشت های صادراتی یک API را در صفحه فرا می خواند ، به فرآیند اصلی می رود و یک CSV می نویسد . این رفتار در چندین پرونده پخش شده است.

صادرات CSV در سراسر فرآیندهای Electron

  1. رندر → پیش بارگذاریnotes.exportCsv()renderer.js تماس API در معرض توسط preload.js.
  2. بین فرایندهاnotes:exportپیش بارگذاری یک کانال IPC را فرا می خواند: یک پیام نامگذاری شده به فرآیند اصلی.
  3. فرایند اصلییک کنترل کننده صادراتmain.js اون کانال رو اداره ميکنه و به نويسنده CSV زنگ ميزنه

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;
});

خواندن handler به سوال اصلی پاسخ می دهد: 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.js و npm; Electron برای این مثال لازم نیست.

دانلود نمونه زیپ

شش فایل منبع را مرور کنید
تجزیه و تحلیل کاربرد استاتیک
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 می رسند و اگر نوشتن فایل شکست بخورد چه اتفاقی می افتد ؟

از مکان های منبع برای بازرسی این جزئیات استفاده کنید. نام کانال های کامپیوتری و کنترل کننده های مبهم می توانند حل نشده باقی بمانند ؛ مشاهدات زمان اجرا به شما راه دیگری برای بررسی آنها می دهد.

بالا