"Notları dışa aktar" nereye gidiyor?
Bu kılavuz küçük bir Electron uygulaması kullanır. Notları Dışa Aktar'a tıklamak sayfadaki bir API'yi çağırır, ana işleme geçer ve bir CSV yazar. Davranış birkaç dosyaya yayılmıştır.
CSV, Electron süreçleri boyunca dışa aktarır
-
Oluşturucu → notları önceden yükle
notes.exportCsv()renderer.js, önpreload.js. -
İşlemler arasında
notes:exportÖn yükleme, bir IPC kanalı çağırır: ana işleme adlandırılmış bir ileti. -
Ana işlem Bir dışa aktarma işleyicisi
main.jsbu kanalı işler ve CSV yazıcısını çağırır.
csv.js notları biçimlendirir → main.js downloads/notes.csv.
CSV dışa aktarma hakkında soru sorun
Aracınızı REA'ya bağlayın ve ona uygulama dizinini veya ASAR dosyasını verin:
Bu uygulamada notları dışa aktardığımda ne olacağını bulmak için REA kullanın. CSV nerede oluşturulur?
Örnek istemi. Uygulama klasörünün veya app.asar.
REA uygulama dosyalarını okur ve giriş noktalarının, modüllerin ve işlem sınırlarının bir haritasını oluşturur. Aracınız, soruşturmayı dışa aktarma özelliğine daraltmak için bu haritayı kullanır.
Dışa aktarma kodunu izleme
Sayfa küçük bir API çağırır
document.querySelector("#export").addEventListener("click", async () => {
const destination = await window.notes.exportCsv();
document.querySelector("#status").textContent = `Saved to ${destination}`;
});
Sayfa yöntem adını biliyor. Uygulama, ön yüklemede yaşar ve bu da onu işleyiciye gösterir.
contextBridge.exposeInMainWorld("notes", {
exportCsv: () => ipcRenderer.invoke("notes:export"),
});
REA notes.exportCsv ve değişmez kanal notes:export. Bu çağrıyı ana işlemdeki tek eşleşen işleyiciyle eşleştirir.
ipcMain.handle("notes:export", () => {
const destination = path.join(app.getPath("downloads"), "notes.csv");
writeFileSync(destination, toCsv(notes), "utf8");
return destination;
});
İşleyiciyi okumak orijinal soruyu yanıtlar: csv.js notları biçimlendirir ve ana işlem notes.csv.
{
"literal_channels": 1,
"renderer_transmissions": 1,
"main_handlers": 1,
"paired_renderer_transmissions": 1,
"ambiguous_renderer_transmissions": 0
}
Aşağıdaki indirilebilir örnekte REA 4.1.0 tarafından kaydedilmiştir. Kaynak konumları API, kanal ve işleyici bulgularına eşlik eder.
Örneği kendiniz analiz edin
Örneği indirin ve fermuarını açın. Arşiv, eksiksiz notes-example klasörünü içerir. Node.js ve npm; Bu örnek için Electron gerekli değildir.
Altı kaynak dosyaya göz atın
npx -y rea-agents@latest analyze-javascript-application \
/absolute/path/to/notes-example --json
Yolu, fermuarını açtığınız klasörle değiştirin. Normalized_result içinde bir IPC kanalı ve bir eşleşen işleyici bulmalısınıznormalized_result.summary.ipc. Kaynak konumları normalized_result normalized_result.graph.
Kendi uygulamanız için dizini veya ASAR yolu ile aynı komutu kullanın. Bir aracı, REA'NUN özellik izleme araçlarıyla değişmez bir dizeyi, API adını veya IPC kanalını takip edebilir.
CSV yazıcısını inceleyin
notes:export. Hangi girdiler CSV yazıcısına ulaşır ve dosyayı yazmak başarısız olursa ne olur?
Bu ayrıntıları incelemek için kaynak konumlarını kullanın. Hesaplanan kanal adları ve belirsiz işleyiciler çözülmeden kalabilir; çalışma zamanı gözlemleri size bunları araştırmanın başka bir yolunu sunar.
- Takip et Notion pano köprüsü Paketlenmiş bir Electron uygulamasına aynı yaklaşımı uygulayın.
- Bir tarayıcı dışa aktarımının Gerçek bir tıklama yakaladığını gözlemleyin ve hangi istekte bulunduğunu görün.
- Bir özellik yerel koda bağlı olduğunda yerel bir işlevi ikili olarak takip etmeye devam edin.