2017-06-14 161 views
0

我想寫一個電子需要數據庫的小應用程序。目前我正在測試PouchDB,但那應該不重要。
爲了獲得更好的代碼質量,我創建了一個將處理常見數據庫請求的類 - 它應該是訪問數據庫的唯一方法。電子數據庫處理

不確定,如果我正確理解主要/渲染程序的概念,但我認爲主進程應該關心數據庫訪問。所以這是我目前的配置:

main.js

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

database.js(顯然只是一個stub)

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

Root.js(的一個UI組件[使用反應])

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

我的問題:這是一個可行的代碼結構解決方案還是我得到了完全錯誤的東西?我的JS體驗只是使用一些jQuery效果,並且Node體驗完全缺失。這只是一個小型的愛好項目,所以我只是想開始編碼;)

回答

0

你有它在右端,數據庫相關代碼應該在主進程中執行。

main.js是主流程,但它似乎缺少創建瀏覽器窗口的代碼(進而創建渲染器進程)。看看Electron here的例子,魔術發生在createWindow()。

Root.js在渲染器進程中執行,它只能通過'remote'或'ipcRenderer'與主進程通信 - 後者更安全一些。關於遠程的更多信息可以在on electron.rocks找到。就代碼結構而言,您正在以正確的方式進行操作。

主進程負責創建和管理BrowserWindow實例和各種應用程序事件。它還可以執行諸如註冊全局快捷方式,創建本地菜單和對話框,響應自動更新事件等等。您的應用的入口點將指向將在主進程中執行的JavaScript文件。電子API的一個子集(參見下圖)在主進程中以及所有node.js模塊中都可用。該文檔的狀態:「基本規則是:如果一個模塊是相關的GUI或低級別的系統,那麼它應該是僅適用於主過程中可用。」

^從什麼地方

報價