Electron 開發(fā): 六千字完整教程

前言

本文包含打包攒霹、自動(dòng)更新怯疤、簡易API調(diào)試催束、進(jìn)程通信等相關(guān)知識(shí)點(diǎn)集峦,內(nèi)容較多,請(qǐng)酌情查看。

electron

簡介

Electron 是由 Github 開發(fā)少梁,是一個(gè)用 Html、css凯沪、JavaScript 來構(gòu)建桌面應(yīng)用程序的開源庫,可以打包為 Mac妨马、Windows、Linux 系統(tǒng)下的應(yīng)用烘跺。

Electron 是一個(gè)運(yùn)行時(shí)環(huán)境,包含 Node 和 Chromium滤淳,可以理解成把 web 應(yīng)用運(yùn)行在 node 環(huán)境中

結(jié)構(gòu)

Electron 主要分為主進(jìn)程和渲染進(jìn)程梧喷,關(guān)系如下圖


image.png

Electron 運(yùn)行 package.json 中的 main 字段標(biāo)明腳本的進(jìn)程稱為主進(jìn)程

在主進(jìn)程創(chuàng)建 web 頁面來展示用戶頁面铺敌,一個(gè) Electron 有且只有一個(gè)主進(jìn)程

Electron 使用 Chromium 來展示 web 頁面,每個(gè)頁面運(yùn)行在自己的渲染進(jìn)程

快速開始

接下來屁擅,讓代碼來發(fā)聲偿凭,雷打不動(dòng)的 hello world

創(chuàng)建文件夾,并執(zhí)行 npm init -y派歌,生成 package.json 文件弯囊,下載 electron 模塊并添加開發(fā)依賴

mkdir electron_hello && cd electron_hello && npm init -y && npm i electron -D

下載速度過慢或失敗,請(qǐng)嘗試使用cnpm胶果,安裝方式如下

# 下載cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
# 下載electron
cnpm i electron -D

創(chuàng)建index.js匾嘱,并寫入以下內(nèi)容

const {app, BrowserWindow} = require('electron')
// 創(chuàng)建全局變量并在下面引用,避免被GC
let win
function createWindow () {
    // 創(chuàng)建瀏覽器窗口并設(shè)置寬高
    win = new BrowserWindow({ width: 800, height: 600 })
    
    // 加載頁面
    win.loadFile('./index.html')
    
    // 打開開發(fā)者工具
    win.webContents.openDevTools()
    
    // 添加window關(guān)閉觸發(fā)事件
    
    win.on('closed', () => {
        win = null  // 取消引用
    })
}

// 初始化后 調(diào)用函數(shù)
app.on('ready', createWindow)  
// 當(dāng)全部窗口關(guān)閉時(shí)退出早抠。
app.on('window-all-closed', () => {
   // 在 macOS 上奄毡,除非用戶用 Cmd + Q 確定地退出,
   // 否則絕大部分應(yīng)用及其菜單欄會(huì)保持激活贝或。
   if (process.platform !== 'darwin') {
        app.quit()
   }
})
  
app.on('activate', () => {
// 在macOS上吼过,當(dāng)單擊dock圖標(biāo)并且沒有其他窗口打開時(shí),
// 通常在應(yīng)用程序中重新創(chuàng)建一個(gè)窗口咪奖。
    if (win === null) {
      createWindow()
    }
})

創(chuàng)建index.html

<!DOCTYPE html>
<html>
    <head>
      <meta charset="UTF-8">
      <title>Hello World!</title>
    </head>
    <body>
        <h1 id="h1">Hello World!</h1>
        We are using node
        <script>
            document.write(process.versions.node)
        </script>
        Chrome
        <script>
            document.write(process.versions.chrome)
        </script>,
        and Electron
        <script>
            document.write(process.versions.electron)
        </script>
    </body>
</html>

最后盗忱,修改 packge.json 中的 main 字段,并添加 start 命令

{
    ...
    main:'index.js',
    scripts:{
        "start": "electron ."
    }
}

執(zhí)行 npm run start 后,就會(huì)彈出我們的應(yīng)用來羊赵。

image.png

調(diào)試

我們知道 Electron 有兩個(gè)進(jìn)程趟佃,主進(jìn)程和渲染進(jìn)程扇谣,開發(fā)過程中我們需要怎么去調(diào)試它們呢?老太太吃柿子闲昭,咱們撿軟的來

渲染進(jìn)程

BrowserWindow 用來創(chuàng)建和控制瀏覽器窗口罐寨,我們調(diào)用它的實(shí)例上的API即可

win = new BrowserWindow({width: 800, height: 600})
win.webContents.openDevTools() // 打開調(diào)試

調(diào)試起來是和 Chrome 是一樣的,要不要這么酸爽

image.png

主進(jìn)程

使用 VSCode 進(jìn)行調(diào)試

使用 VSCode 打開項(xiàng)目序矩,點(diǎn)擊調(diào)試按鈕


image.png

點(diǎn)擊調(diào)試后的下拉框


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
支付 ¥13.99 繼續(xù)閱讀
  • 序言:七十年代末鸯绿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子簸淀,更是在濱河造成了極大的恐慌瓶蝴,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件租幕,死亡現(xiàn)場離奇詭異舷手,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)劲绪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門男窟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贾富,你說我怎么就攤上這事歉眷。” “怎么了祷安?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵兔乞,是天一觀的道長。 經(jīng)常有香客問我霍骄,道長淡溯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮膘侮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘逻锐。我一直安慰自己,他們只是感情好晓淀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布凶掰。 她就那樣靜靜地躺著锄俄,像睡著了一般勺拣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上毅戈,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天愤惰,我揣著相機(jī)與錄音,去河邊找鬼扇单。 笑死奠旺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的响疚。 我是一名探鬼主播忿晕,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼践盼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了咕幻?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤咱旱,失蹤者是張志新(化名)和其女友劉穎吐限,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诸典,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狐粱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年肌蜻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒋搜。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡育谬,死狀恐怖帮哈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咖刃,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布僵缺,位于F島的核電站踩叭,受9級(jí)特大地震影響容贝,放射性物質(zhì)發(fā)生泄漏之景。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一满力、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叠纷,春花似錦潦嘶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溪窒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間澈蚌,已是汗流浹背灼狰。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工交胚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蝴簇。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像旁钧,于是被迫代替她去往敵國和親互拾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容