Bir Electron izleyin
CSV dışa aktarma.

Sayfa apı'sinden Electron IPC aracılığıyla CSV dosya yazıcısına bir düğme tıklaması izleyin.

"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

  1. Oluşturucu → notları önceden yüklenotes.exportCsv()renderer.js, ön preload.js.
  2. İşlemler arasındanotes:export Ön yükleme, bir IPC kanalı çağırır: ana işleme adlandırılmış bir ileti.
  3. Ana işlem Bir dışa aktarma işleyicisimain.js bu kanalı işler ve CSV yazıcısını çağırır.

csv.js notları biçimlendirir → main.js downloads/notes.csv.

REA, değişmez IPC çağrısını işleyicisiyle eşleştirir ve açıkta kalan API'yi tanımlar. Yol koddan çıkarılır; Bir çalışma zamanı yakalama neyin yürütüldüğünü kontrol edebilir.

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:

Kodlama aracınız

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

renderer.js * örnek kaynak
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.

preload.js * örnek kaynak
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.

main.js * örnek kaynak
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.

REA sonuç * özet.ıpc'den alıntı
{
  "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.

Örnek ZİP dosyasını indirin

Altı kaynak dosyaya göz atın
Statik uygulama analizi
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.

Üst