"یادداشت های صادراتی" به کجا می رود؟
این راهنما از یک برنامه کوچک Electron استفاده می کند. کلیک کردن یادداشت های صادراتی یک API را در صفحه فرا می خواند ، به فرآیند اصلی می رود و یک CSV می نویسد . این رفتار در چندین پرونده پخش شده است.
صادرات CSV در سراسر فرآیندهای Electron
-
رندر → پیش بارگذاری
notes.exportCsv()renderer.jsتماس API در معرض توسطpreload.js. -
بین فرایندها
notes:exportپیش بارگذاری یک کانال IPC را فرا می خواند: یک پیام نامگذاری شده به فرآیند اصلی. -
فرایند اصلییک کنترل کننده صادرات
main.jsاون کانال رو اداره ميکنه و به نويسنده CSV زنگ ميزنه
csv.js یادداشت ها را فرمت می کند → main.js می نویسد downloads/notes.csv.
درباره صادرات CSV بپرسید
نماینده خود را به REA متصل کنید و به آن دایرکتوری برنامه یا فایل ASAR را بدهید:
استفاده از REA برای پیدا کردن آنچه اتفاق می افتد زمانی که من صادرات یادداشت در این برنامه. CSV در کجا ایجاد شده است ؟
مثال سریع. شامل مسیر مطلق به پوشه برنامه یا app.asar.
REA فایل های برنامه را می خواند و نقشه ای از نقاط ورودی ، ماژول ها و مرزهای فرآیند را می سازد. مامور شما از اون نقشه استفاده ميکنه تا تحقيقات رو به خصوصيت صادرات محدود کنه
کد صادرات را ردیابی کنید
صفحه یک API کوچک را فرا می خواند
document.querySelector("#export").addEventListener("click", async () => {
const destination = await window.notes.exportCsv();
document.querySelector("#status").textContent = `Saved to ${destination}`;
});
صفحه نام روش را می داند. پیاده سازی در پیش بارگذاری زندگی می کند که آن را در معرض رندر قرار می دهد.
contextBridge.exposeInMainWorld("notes", {
exportCsv: () => ipcRenderer.invoke("notes:export"),
});
سوابق REA notes.exportCsv و کانال به معنای واقعی کلمه notes:export. این فراخوان را با یک کنترل کننده تطبیق دهنده در فرآیند اصلی جفت می کند.
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 به پوشه دانلود کاربر.
{
"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 می رسند و اگر نوشتن فایل شکست بخورد چه اتفاقی می افتد ؟
از مکان های منبع برای بازرسی این جزئیات استفاده کنید. نام کانال های کامپیوتری و کنترل کننده های مبهم می توانند حل نشده باقی بمانند ؛ مشاهدات زمان اجرا به شما راه دیگری برای بررسی آنها می دهد.
- پل کلیپ بورد Notion را دنبال کنید همان رویکرد را به یک برنامه Electron بسته بندی شده اعمال کنید.
- صادرات مرورگر را مشاهده کنیدیک کلیک واقعی را ضبط کنید و ببینید کدام درخواست را انجام می دهد.
- یک تابع بومی را دنبال کنیدادامه به یک باینری زمانی که یک ویژگی به کد بومی بستگی دارد.