2016-10-28 17 views
6

Kısa süre önce ayaklarımın Elektron ile ıslanmasına başladım. Arkasındaki ilkeleri gerçekten çok seviyorum ama bazı şeyler yapmak için biraz kafa karıştırıcı buluyorum.Elektron - İşleme Girişi

Örneğin, kullanıcı girişini nasıl işlersiniz? Bir main.js ve bir yerel html dosyasına işaret eden bir BrowserWindow (giriş alanıyla bazı kullanıcı ayarlarını içeren) kullanıyorum.

HTML formu gönderildiğinde (aynı dosyaya veya başka birine) bu verilere nasıl erişirim?

main.js Electron ile

const {app, BrowserWindow} = require('electron') 
let win 

function createWindow() { 
    win = new BrowserWindow({width: 800, height: 600}) 
    win.loadURL('file://' + __dirname + '/index.html') 

    // Emitted when the window is closed. 
    win.on('closed',() => { 
    win = null 
    }) 

    // Open the DevTools. 
    // win.webContents.openDevTools() 
} 

app.on('window-all-closed',() => { 
    if (process.platform !== 'darwin') { 
    app.quit() 
    } 
}) 

app.on('activate',() => { 
    if (win === null) { 
    createWindow() 
    } 
}) 

// In this file you can include the rest of your app's specific main process 
// code. You can also put them in separate files and require them here. 

//Start the main window 
app.on('ready', createWindow) 

index.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
</head> 
<body> 
    <form action="" method="post"> 
     <input type="text" name="test-1"> 
    </form> 
</body> 
</html> 

cevap

4

, tipik bir web uygulaması senaryoda olacak gibi yolları ile web sunucusu olarak hareket değildir node.js. Rotalara istek göndermek yerine, Angular, React, Knockout, vb. Gibi javascript çerçevesini kullanarak tek bir sayfa uygulaması yaratabilirsiniz. Bu noktada, artık yönlendirmeyi işlemek zorunda kalmazsınız. 'Gönder' tıklama etkinliğinizi doğrudan sayfa içinde bir javascript işlevine bağlar ve girişi buradan işlersiniz.

node.js ana işlem bağlamından yapabildiğiniz sayfanın javascript içeriğinden her şeyi yapabilirsiniz. Örneğin, dosya sisteminize sayfanızdan erişmeniz gerekiyorsa, node.js yerel API'lerine erişmek için Remote modülünü kullanırsınız. Örneğin

:

// Gain access to the node.js file system api 
function useNodeApi() { 
    const remote = require('electron').remote; 
    const fs = remote.require('fs'); 
    fs.writeFile('test.txt', 'Hello, I was written by the renderer process!'); 
} 

Nadiren bir şey başarmak için ana sürecine geri kontrolünü geçmek için gerekli bir durum rastlamak ettik. BrowserWindow başladığında, yapmanız gereken herhangi bir şey, render işleminden yapılabilir. Bu hemen hemen http yoluyla form gönderme gönderileri gibi şeyler yapma gereğini ortadan kaldırır.

İlgili konular