把你的web項目變成桌面.exe

前段時間摸魚太多,閑的把正在做的vue+element的后臺項目轉(zhuǎn)成了桌面應(yīng)用。

我用的是微軟的electron框架,就是vscode用的那個。

桌面開發(fā)的框架很多,因為我是做前端的,從這個入手還是比較簡單的*只要會HTML與JS就可以上手了*

這個東西還是很好玩的,就是打包時間有點長...

electron簡介

  • 官方網(wǎng)站https://www.electronjs.org/

  • electron是微軟在GitHub上開源框架https://github.com/electron(5w+ star),electron是基于Chromium 和 Node.js 來構(gòu)建一個跨平臺應(yīng)用的(Mac,Windows,和Linux)。

  • Chromium是一個開源瀏覽器,與chrome區(qū)別是不會自動更新,但是一些新特性貌似會在Chromium先上。

    我的理解就是他就是一個js控制的被打包了的精簡版的谷歌瀏覽器

多進程

Chromium是多進程的,每一個頁面都是一個獨立的渲染進程,每一個頁面就是一個窗口,你可以理解成瀏覽器的tab

任何 Electron 應(yīng)用程序的入口都是 main 文件。 這個文件控制了主進程,它運行在一個完整的Node.js環(huán)境中,負責(zé)控制您應(yīng)用的生命周期,顯示原生界面,執(zhí)行特殊操作并管理渲染器進程。

img
  • 主進程

    • 整體控制

    • 全局快捷鍵

    • 屏幕

    • 窗口

    • 菜單項

    • 系統(tǒng)托盤

    • 從主進程到渲染進程的異步通信

    • 創(chuàng)建和控制視圖

    • 等等

  • 渲染進程

    • 頁面渲染

    • webview標簽

    • 渲染進程與主進程通信

    • 從渲染進程到主進程的異步通信

    • 子窗口

    • 捕獲桌面資源

進程間的關(guān)系

主進程通過構(gòu)造BrowserWindow實例來創(chuàng)建頁面。每個 BrowserWindow實例都在自己的渲染進程里運行頁面。當(dāng)一個 BrowserWindow 實例被銷毀后,相應(yīng)的渲染進程也會被終止。

Web頁面因為安全限制,不能直接訪問原生的GUI資源,Electron也一樣,渲染進程如果想要進行原生的GUI操作,必須和主進程通信,請求相應(yīng)的GUI操作。

vue項目轉(zhuǎn)exe

開始正題

步驟

git clone [https://github.com/electron/electron-quick-](https://github.com/electron/electron-quick-)**start**

cd electron-**quick**-**start**

cnpm **install**

  • 打包要轉(zhuǎn)成桌面端的vue項目 本項目是基于vue-element-admin架構(gòu)的后臺管理系統(tǒng) 這個地方有個坑是要把auth.js里面存儲token的方式換成localstorage方式 否則cnpm start之后登錄頁是不會跳轉(zhuǎn)的,因為electron應(yīng)用會有兩個進程,一個瀏覽器一個node,在node里自然獲取不到瀏覽器的cookie 需要靠electron提供的api來進行通信 所以這塊直接用localStorage方式了****打包的地方還一個坑就是 靜態(tài)資源文件路徑要變成./ 否則會出現(xiàn)白屏問題
    image.png
image.png
  • 刪除掉原index.html 把打包好的dist放在main.js同級目錄然后引入


    image.png
  • cnpm start 運行

image.png

打包

打包有很多種方法 插件很多

我用的是electron-packager

cnpm install electron-packager --save-dev

"scripts": { 
"start": "electron .", 
"packager": "electron-packager ./ App --platform=win32 --arch=x64  --overwrite"http://此處為添加命令
} 
命令說明: 
* location of project:項目所在路徑 
* name of project:打包的項目名字 
* platform:確定了你要構(gòu)建哪個平臺的應(yīng)用(Windows、Mac 還是 Linux) 
* architecture:決定了使用 x86 還是 x64 還是兩個架構(gòu)都用 
* electron version:electron 的版本 
* optional options:可選選項```

```npm run packager```

打包時間挺長的 要耐心等待一下

在App-win32-x64文件夾下可以找到App.exe
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容