2017-06-14 3 views
0

Ich versuche eine kleine App mit Electron zu schreiben, die eine Datenbank benötigt. Momentan teste ich PouchDB, aber das sollte nicht wirklich wichtig sein.
Für eine bessere Codequalität habe ich eine Klasse erstellt, die die allgemeinen Datenbankanforderungen verarbeiten wird - es sollte die einzige Möglichkeit sein, auf die Datenbank zuzugreifen.Elektronendatenbank Handhabung

Nicht sicher, wenn ich das Main/Renderer-Prozesskonzept richtig verstanden habe, aber ich denke, der Hauptprozess sollte sich um DB-Zugriff kümmern. Das ist also meine aktuelle Konfiguration:

main.js

import Database from './database' 
export const myDB = new Database() 

database.js (natürlich nur ein Stummel)

export default class Database { 
    hello =() => { 
    console.log("Hello World") 
    } 
} 

Root.js (eine der ui Komponenten [unter Verwendung reagieren])

const remote = require('electron').remote 
const main = remote.require('./main.js') 
... 
<button onClick={() => main.myDB.hello()}>Test</button> 

Meine Frage: Ist das eine mögliche Lösung für die Code-Strukturierung oder bekomme ich etwas völlig falsch? Meine JS-Erfahrungen verwenden nur einige jQuery-Effekte und die Knotenerfahrung fehlt vollständig. Dies ist nur ein kleines Hobby-Projekt, also wollte ich nur anfangen zu codieren;)

Antwort

0

Sie haben es am rechten Ende, die Datenbank bezogenen Code sollte im Hauptprozess ausgeführt werden.

main.js ist, was der Hauptprozess wäre, aber es scheint zu fehlen der Code, der ein Browser-Fenster erstellt (was wiederum den Renderer-Prozess erstellt). Werfen Sie einen Blick auf das Beispiel von Electron here, passiert die Magie bei createWindow().

Root.js wird im Renderer-Prozess ausgeführt, es kann nur über 'remote' oder 'ipcRenderer' mit dem Hauptprozess kommunizieren - letzteres ist ein wenig sicherer. Ein bisschen mehr Informationen über die Fernbedienung können on electron.rocks gefunden werden. Sie tun es in Bezug auf die Code-Struktur richtig.

Der Hauptprozess ist verantwortlich für das Erstellen und Verwalten von BrowserWindow-Instanzen und verschiedenen Anwendungsereignissen. B. globale Verknüpfungen speichern, native Menüs und Dialoge erstellen, auf automatische Update-Ereignisse reagieren und vieles mehr. Der Einstiegspunkt Ihrer App zeigt auf eine JavaScript-Datei, die im Hauptprozess ausgeführt wird. Eine Untergruppe von Electron-APIs (siehe Grafik unten) ist im Hauptprozess verfügbar, ebenso wie alle node.js-Module. Die docs heißt es: „Die Grundregel lautet: Wenn ein Modul GUI oder Low-Level-System bezogen, dann sollte es nur im Hauptprozess zur Verfügung steht.“

^irgendwo Zitat von