Wie integriert Elektron ipcRenderer in Eckige 2-app basiert auf dem Typoskript?
Möchte ich ipcMain /ipcRenderer auf mein Projekt zu kommunizieren von Winkel-zu Elektronen-und zurück.
Elektron Seite ist ziemlich klar:
const
electron = require('electron'),
ipcMain = electron.ipcMain,
;
ipcMain.on('asynchronous-message', function(event, arg) {
console.debug('ipc.async', arg);
event.sender.send('asynchronous-reply', 'async-pong');
});
ipcMain.on('synchronous-message', function(event, arg) {
console.debug('ipc.sync', arg);
event.returnValue = 'sync-pong';
});
Aber ich habe keine Idee, wie das zu integrieren, dass Elektron-Modul in meine Eckige 2-app. Ich benutze SystemJS als Modul loader, aber ich bin ein rookie mit ihm.
Jede Hilfe dankbar. Danke.
--- Mario
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zwei Lösungen:
Robuste Weise. Register Objekt
require
zurückgegeben:Dies ist die beste, weil
renderer/init.js
Skript lädt das Modul auf der Startseite. SystemJS haben, es dauert nur, nicht Lasten.Alternative. Verwenden schmutzige trick mit Erklärung.
Bekommen Elektron-Instanz innerhalb
index.html
:Erklären Sie es in Ihrem
typescript
Datei auf diese Weise:Verwenden Sie es mit Freiheit )
import { remote, ipcRenderer } from 'electron';
Einem letzten Paket namens
ngx-electron
macht dies einfach. Link zum repo und link zum Artikelsrc/app/app.- Modul.ts
src/app/Ihr.Komponente.ts
Hinweis:
NgZone
verwendet, dathis.message
aktualisiert asynchron außerhalb der Eckigen zone. ArtikelHätten Sie
angular
gehostet in den UI-rendering-Prozess von Elektronen. DieipcMain
wird verwendet, um zu kommunizieren, um nicht Rendern von child-Prozessen.Sollte dies nur ein Fall von dass der
ipcRenderer
Modul in Ihrem Haupt-html-Datei (Elektron bieten diese für Sie):festlegen und dann einen handler in der main-js-Datei:
Das ist alles, es sollte, um es.
Meine Lösung:
konfigurieren Sie eine baseUrl in tsconfig.json
an der Wurzel des Verzeichnis verweist, die durch die baseUrl, erstellen Sie ein Verzeichnis "Elektron".
In diesem Verzeichnis eine index-Datei.ts:
(idealerweise export-Standard [...]require('Elektron'), aber das ist nicht statisch analysierbaren...)
nun kann ich in meinem renderer-Prozess:
Hoffe, es macht Sinn...
mit Testungen aktiviert:
NB: Testungen, die ich habe ist von:
Komponente.TS
....
MAIN.JS
config
plugins: [
neue webpack.ExternalsPlugin('commonjs', [
'desktop-capturer',
'Elektron',
'ipc',
'ipc-renderer',
"native-image',
'remote',
'web frame',
'Zwischenablage',
"crash-reporter',
'screen',
'shell'
])
],