2016-10-28 17 views
6

Gần đây tôi đã bắt đầu làm ướt chân bằng Electron. Tôi thực sự thích các nguyên tắc đằng sau nó nhưng tôi thấy nó hơi khó hiểu để làm một số thứ.Điện tử - Đầu vào xử lý

Ví dụ: cách bạn xử lý dữ liệu nhập của người dùng? Tôi đã có một main.js và một BrowserWindow trỏ đến một tệp html cục bộ (có chứa một số thiết lập người dùng với trường đầu vào).

Làm cách nào để truy cập dữ liệu này khi biểu mẫu HTML được gửi (cho cùng một tệp hoặc tệp khác)?

main.js

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> 

Trả lời

4

Với Electron, Node.js không hoạt động như một máy chủ web với các tuyến đường như nó sẽ được trong một kịch bản ứng dụng web điển hình. Thay vì gửi yêu cầu đến các tuyến đường, bạn sẽ tạo ra một ứng dụng trang đơn bằng cách sử dụng một khung javascript như Angular, React, Knockout, vv Tại thời điểm đó, bạn không còn cần phải xử lý định tuyến nữa. Bạn sẽ liên kết sự kiện nhấp 'Gửi' của bạn với hàm javascript trực tiếp trong trang và xử lý dữ liệu nhập từ đó.

Bạn có thể thực hiện mọi thứ từ ngữ cảnh javascript của trang mà bạn có thể thực hiện từ ngữ cảnh quy trình chính của node.js. Ví dụ: nếu bạn cần truy cập hệ thống tệp từ trang của mình, bạn sẽ sử dụng mô-đun Remote để truy cập vào API gốc của node.js.

Ví dụ:

// 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!'); 
} 

tôi hiếm khi đi qua một tình huống mà tôi cần phải vượt qua kiểm soát lại quá trình chính để thực hiện một cái gì đó. Khi BrowserWindow khởi chạy, bất cứ điều gì bạn cần làm có thể được thực hiện từ quá trình renderer. Điều này khá nhiều loại bỏ sự cần thiết phải làm những việc như gửi bài viết hình thức thông qua http.

Các vấn đề liên quan