電子-システムダイアログ
どのアプリもユーザーフレンドリーであることが非常に重要です。結果として、alert()呼び出しを使用してダイアログボックスを作成しないでください。Electronは、ダイアログボックスを作成するタスクを実行するための非常に優れたインターフェイスを提供します。それを見てみましょう。
電子は提供します dialog ファイルを開いたり保存したり、アラートを送信したりするためのネイティブシステムダイアログを表示するために使用できるモジュール。
例に直接ジャンプして、単純なテキストファイルを表示するアプリを作成しましょう。
新しいmain.jsファイルを作成し、その中に次のコードを入力します-
const {app, BrowserWindow} = require('electron')
const url = require('url')
const path = require('path')
const {ipcMain} = require('electron')
let win
function createWindow() {
win = new BrowserWindow({width: 800, height: 600})
win.loadURL(url.format ({
pathname: path.join(__dirname, 'index.html'),
protocol: 'file:',
slashes: true
}))
}
ipcMain.on('openFile', (event, path) => {
const {dialog} = require('electron')
const fs = require('fs')
dialog.showOpenDialog(function (fileNames) {
// fileNames is an array that contains all the selected
if(fileNames === undefined) {
console.log("No file selected");
} else {
readFile(fileNames[0]);
}
});
function readFile(filepath) {
fs.readFile(filepath, 'utf-8', (err, data) => {
if(err){
alert("An error ocurred reading the file :" + err.message)
return
}
// handle the file content
event.sender.send('fileData', data)
})
}
})
app.on('ready', createWindow)
このコードは、メインプロセスがレンダラープロセスから「openFile」メッセージを受信するたびに、開くダイアログボックスをポップオープンします。このメッセージは、ファイルの内容をレンダラープロセスにリダイレクトします。次に、コンテンツを印刷する必要があります。
今、新しいを作成します index.html 次の内容のファイル-
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<title>File read using system dialogs</title>
</head>
<body>
<script type = "text/javascript">
const {ipcRenderer} = require('electron')
ipcRenderer.send('openFile', () => {
console.log("Event sent.");
})
ipcRenderer.on('fileData', (event, data) => {
document.write(data)
})
</script>
</body>
</html>
これで、アプリを実行するたびに、次のスクリーンショットに示すように、ネイティブの開いているダイアログボックスがポップアップ表示されます-
表示するファイルを選択すると、その内容がアプリウィンドウに表示されます-
これは、Electronが提供する4つのダイアログの1つにすぎません。しかし、それらはすべて同じような使用法を持っています。を使用してそれを行う方法を学んだらshowOpenDialog、その後、他のダイアログのいずれかを使用できます。
同じ機能を持つダイアログは次のとおりです。
- showSaveDialog([browserWindow、] options [、callback])
- showMessageDialog([browserWindow、] options [、callback])
- showErrorDialog(title、content)