用 Vue 建立一個(gè)簡單的 electron 桌面應(yīng)用

1. electron簡介

2. 工具介紹

3. 實(shí)踐效果抑月,步驟

1)一個(gè)簡單的 Electron 桌面應(yīng)用都是沖 Hello World移斩! 開始的。

以上是使用 electron-vue 超級迅速制作出來的 electron 桌面應(yīng)用肌幽。

2)安裝的組件

vue init simulatedgreg/electron-vue white-electron-first

3)build tool choice 蛛株?

構(gòu)建工具的選擇,比較先進(jìn)的是electron-builder翰苫。

實(shí)際上調(diào)試止邮,開發(fā)可以直接選擇 electron-builder,它支持熱更新奏窑,像目前大部分在使用的 vue-cli 構(gòu)建出來的項(xiàng)目一樣保存即更新导披。

如果是簡單打包應(yīng)用就直接選擇 electron-packager 就好了,功能比較簡單埃唯。

4) 下一步

> npm i? // 裝包

> npm run dev? // 測試環(huán)境運(yùn)行

就可以有一個(gè)初步的Electron桌面應(yīng)用了撩匕。

4. 如何將網(wǎng)站只做成 ELectron 應(yīng)用?

1)網(wǎng)站頁面

to 桌面應(yīng)用

2)熟悉 node 的朋友都知道筑凫,啟動一個(gè) node 程序滑沧,通常就是?node app.js?之類的。

把這個(gè) Node 應(yīng)用轉(zhuǎn)換成一個(gè) Electron 應(yīng)用也是非常簡單的巍实,我們只不過是把?node?運(yùn)行時(shí)替換成了?electron運(yùn)行時(shí)滓技。package.json如下:

{

? ? "script": {

? ? ? ? "electron": "electron build/electron.js",

? ? }

}

Electron.js (一般啟動項(xiàng)目寫在main.js,具體看項(xiàng)目) 這個(gè)文件應(yīng)該怎樣寫呢棚潦,這種基本都是參考成熟項(xiàng)目的令漂,一般簡單的如:

// electron.js"

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


? // Keep a global reference of the window object, if you don't, the window will

? // be closed automatically when the JavaScript object is garbage collected.

? let win


? function createWindow () {

? ? // 創(chuàng)建瀏覽器窗口。

? ? win = new BrowserWindow({width: 800, height: 600})


? ? // 然后加載應(yīng)用的 index.html丸边。

? ? win.loadFile('index.html')


? ? // 打開開發(fā)者工具

? ? win.webContents.openDevTools()


? ? // 當(dāng) window 被關(guān)閉叠必,這個(gè)事件會被觸發(fā)。

? ? win.on('closed', () => {

? ? ? // 取消引用 window 對象妹窖,如果你的應(yīng)用支持多窗口的話纬朝,

? ? ? // 通常會把多個(gè) window 對象存放在一個(gè)數(shù)組里面,

? ? ? // 與此同時(shí)骄呼,你應(yīng)該刪除相應(yīng)的元素共苛。

? ? ? win = null

? ? })

? }


? // Electron 會在初始化后并準(zhǔn)備

? // 創(chuàng)建瀏覽器窗口時(shí),調(diào)用這個(gè)函數(shù)蜓萄。

? // 部分 API 在 ready 事件觸發(fā)后才能使用隅茎。

? app.on('ready', createWindow)


? // 當(dāng)全部窗口關(guān)閉時(shí)退出。

? app.on('window-all-closed', () => {

? ? // 在 macOS 上嫉沽,除非用戶用 Cmd + Q 確定地退出辟犀,

? ? // 否則絕大部分應(yīng)用及其菜單欄會保持激活。

? ? 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()

? ? }

? })


? // 在這個(gè)文件中,你可以續(xù)寫應(yīng)用剩下主進(jìn)程代碼跃捣。

? // 也可以拆分成幾個(gè)文件舅列,然后用 require 導(dǎo)入韩脏。

上文代碼中有一段win.loadFile('index.html')的代碼,意味著你的入口頁面就是 index.html, 就像我們用electron-vue 模板啟動的 hello world 一樣奈附。

3)我們的 view 應(yīng)用實(shí)際上就是一個(gè) SPA 的頁面刁赦,打包出來后也會有這個(gè)入口index.html 文件娶聘。

于是?npm run build?先 build 出 dist 文件后,electron.js 的 index.html 替換成 dist 目錄下的 html 文件之后甚脉,出現(xiàn)以下問題:打包出來的 css丸升、js 文件訪問不到了。

應(yīng)該是應(yīng)用版本不同牺氨,我們項(xiàng)目用的 webpack 找不到以上配置狡耻,于是直接改了 index.html 里面的 css,js 引用路徑猴凹。

由于我們服務(wù)加載前必須先訪問登陸系統(tǒng)夷狰,前端項(xiàng)目在沒有配 ha 的情況下,單獨(dú)的運(yùn)行個(gè)靜態(tài)前端項(xiàng)目是不行的呢郊霎。

然而沼头,還是做到了。

實(shí)際也比較簡單:直接把這段代碼改成

// 然后加載應(yīng)用的 index.html书劝。

win.loadFile('index.html')

// to 本地服務(wù)的地址就好了

win.loadUrl('http://localhost:4000')

目前這是最簡單的打包一個(gè)已有應(yīng)用成 electron 應(yīng)該的方法进倍。

歡迎工作一到五年的Java工程師朋友們加入Java程序員開發(fā): 854393687

群內(nèi)提供免費(fèi)的Java架構(gòu)學(xué)習(xí)資料(里面有高可用、高并發(fā)购对、高性能及分布式猾昆、Jvm性能調(diào)優(yōu)、Spring源碼骡苞,MyBatis垂蜗,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識點(diǎn)的架構(gòu)資料)合理利用自己每一分每一秒的時(shí)間來學(xué)習(xí)提升自己,不要再用"沒有時(shí)間“來掩飾自己思想上的懶惰烙如!趁年輕么抗,使勁拼,給未來的自己一個(gè)交代亚铁!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蝇刀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子徘溢,更是在濱河造成了極大的恐慌吞琐,老刑警劉巖捆探,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異站粟,居然都是意外死亡黍图,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門奴烙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來助被,“玉大人,你說我怎么就攤上這事切诀】罚” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵幅虑,是天一觀的道長丰滑。 經(jīng)常有香客問我,道長倒庵,這世上最難降的妖魔是什么褒墨? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮擎宝,結(jié)果婚禮上郁妈,老公的妹妹穿的比我還像新娘。我一直安慰自己认臊,他們只是感情好圃庭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著失晴,像睡著了一般剧腻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上涂屁,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天书在,我揣著相機(jī)與錄音,去河邊找鬼拆又。 笑死儒旬,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的帖族。 我是一名探鬼主播栈源,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼竖般!你這毒婦竟也來了甚垦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎艰亮,沒想到半個(gè)月后闭翩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迄埃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年疗韵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侄非。...
    茶點(diǎn)故事閱讀 38,569評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蕉汪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出彩库,到底是詐尸還是另有隱情肤无,我是刑警寧澤先蒋,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布骇钦,位于F島的核電站,受9級特大地震影響竞漾,放射性物質(zhì)發(fā)生泄漏眯搭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一业岁、第九天 我趴在偏房一處隱蔽的房頂上張望鳞仙。 院中可真熱鬧,春花似錦笔时、人聲如沸棍好。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽借笙。三九已至,卻和暖如春较锡,著一層夾襖步出監(jiān)牢的瞬間业稼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工蚂蕴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留低散,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓骡楼,卻偏偏與公主長得像熔号,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子鸟整,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評論 2 348

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

  • 昨天引镊,我約好了爸爸一起去誦讀,第二天,我凌晨五點(diǎn)起床的祠乃,因?yàn)槲遗挛疫t到梦重。我就和爸爸找了一個(gè)近處吃早飯。到...
    月康日健閱讀 167評論 0 0
  • 上午10點(diǎn)多,收到老同學(xué)的微信嘱支,打個(gè)招呼之后蚓胸,就開口借錢了。 許久沒有聯(lián)系的我們除师,剩下的也許就是點(diǎn)贊之情了沛膳。她向我...
    丹丹三撇閱讀 638評論 0 0
  • 梁小姐發(fā)來信息的那天,我正望著窗外被防盜窗切割成長方形的灰土土的天空汛聚。 她說:“老寶锹安,我結(jié)婚了∫幸ǎ” 梁小姐是我大學(xué)...
    小北以南閱讀 267評論 0 0