初探Electron
前言
目前的javascript遊戲引擎一直有個問題,就是沒有編輯器,要寫的話在檔案存取的部分要花上不少的時間,在偶然間,看到Electron,它可以把網頁變成本地的App,這樣就可以直接存取本地的檔案系統,看起來似乎是一個解決檔案存取的好方案,在此就先研究看看。
內容
使用Electron需要node.js,請先安裝,安裝好後建一個資料夾,它會作為專案的root,之後在該資料夾輸入以下命令
npm init
全部用預設值後會產生
package.json,接著一樣在專案的root輸入以下命令
npm install --save-dev electron
如果要安裝成全域套件,輸入以下命令
npm install electron -g
接著在專案的root產生一個檔案main.js,內容如下
const {app, BrowserWindow} = require('electron')
const path = require('path')
const url = require('url')
// 將這個 window 物件記在全域變數裡。
// 如果沒這麼做,這個視窗在 JavaScript 物件被垃圾回收時(GC)後就會被自動關閉。
let win
function createWindow () {
// 建立瀏覽器視窗。
win = new BrowserWindow({width: 800, height: 600})
// 並載入應用程式的 index.html。
win.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'),
protocol: 'file:',
slashes: true
}))
// 打開 DevTools。
win.webContents.openDevTools()
// 視窗關閉時會觸發。
win.on('closed', () => {
// 拿掉 window 物件的參照。如果你的應用程式支援多個視窗,
// 你可能會將它們存成陣列,現在該是時候清除相關的物件了。
win = null
})
}
// 當 Electron 完成初始化,並且準備好建立瀏覽器視窗時
// 會呼叫這的方法
// 有些 API 只能在這個事件發生後才能用。
app.on('ready', createWindow)
// 在所有視窗都關閉時結束程式。
app.on('window-all-closed', () => {
// 在 macOS 中,一般會讓應用程式及選單列繼續留著,
// 除非使用者按了 Cmd + Q 確定終止它們
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
// 在 macOS 中,一般會在使用者按了 Dock 圖示
// 且沒有其他視窗開啟的情況下,
// 重新在應用程式裡建立視窗。
if (win === null) {
createWindow()
}
})
// 你可以在這個檔案中繼續寫應用程式主程序要執行的程式碼。
// 你也可以將它們放在別的檔案裡,再由這裡 require 進來。
接著一樣在專案的root產生一個檔案index.html,內容如下
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
我們用了 node <script>document.write(process.versions.node)</script>,
Chrome <script>document.write(process.versions.chrome)</script>,
以及 Electron <script>document.write(process.versions.electron)</script>.
</body>
</html>
接著修改package.json,修改內容如下
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "main.js",
"scripts": {
"start": "electron .",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"electron": "^1.8.4"
}
}
最後在專案的root輸入以下命令
npm start
接著就會看到HelloWorld視窗如下圖
|
HelloWorld視窗 |
後記
用起來比想像中還簡單許多,看起來似乎是用chrome作為視窗,連debugger都叫得出來!這次只是初探,以後有機會再多多研究。
參考內容
寫你第一個 Electron 應用程式