帶你走入Electron開發(fā)

      網(wǎng)友投稿 1441 2022-05-29

      前言

      Electron是一個(gè)使用 JavaScript、HTML 和 CSS 構(gòu)建桌面應(yīng)用程序的框架。 嵌入 Chromium 和 Node.js 到 二進(jìn)制的 Electron 允許您保持一個(gè) JavaScript 代碼代碼庫并創(chuàng)建 在Windows上運(yùn)行的跨平臺(tái)應(yīng)用 macOS和Linux——不需要本地開發(fā) 經(jīng)驗(yàn)。前端程序員常用的atom 和vscode 就是用electron開發(fā)的。

      開機(jī)自啟動(dòng)

      electron官方提供的相關(guān)代碼功能,并不需要安裝第三方代碼庫。可能大家在搜帖子的時(shí)候會(huì)看到使用其他方式來實(shí)現(xiàn),個(gè)人覺得沒必要。直接使用官方提供的即可。

      首先獲取可執(zhí)行文件的位置

      調(diào)用官方方法。

      openAtLogin:ture是開啟自啟動(dòng),false關(guān)閉自啟動(dòng)

      // 獲取可執(zhí)行文件位置 const ex=process.execPath; // 調(diào)用方法 app.setLoginItemSettings({ openAtLogin: true, path: ex, args: [] });

      執(zhí)行代碼之后,會(huì)在系統(tǒng)的注冊表中寫入對應(yīng)的數(shù)據(jù)。

      運(yùn)行regedit,打開注冊表。依次展開

      HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 就可以找到開機(jī)注冊項(xiàng)

      單一實(shí)例

      單一實(shí)例,就是只能有一個(gè)程序在運(yùn)行。當(dāng)你沒有使用單一實(shí)例的時(shí)候,可以同一時(shí)間開啟多個(gè)程序,不受限制。

      同樣的官方也提供了對應(yīng)的方法app.requestSingleInstanceLock()

      返回值是true/false,表示正在啟動(dòng)的示例是否成功取得了鎖。 如果它取得鎖失敗,那么說明另一個(gè)應(yīng)用實(shí)例已經(jīng)取得了鎖并且仍舊在運(yùn)行,并立即退出。

      示例:

      if (!app.requestSingleInstanceLock()) { app.quit() } else { app.on('second-instance', (event, commandLine, workingDirectory) => { // 當(dāng)運(yùn)行第二個(gè)實(shí)例時(shí),將會(huì)聚焦到myWindow這個(gè)窗口 if (win) { if (win.isMinimized()) win.restore() win.focus() } })

      打包

      在package.json添加electron-builder配置

      例如:一鍵安裝 創(chuàng)建桌面圖標(biāo) 創(chuàng)建開始菜單圖標(biāo)等基礎(chǔ)配置

      "nsis": { "oneClick": false, // 一鍵安裝 "guid": "xxxx", //注冊表名字,不推薦修改 "perMachine": true, // 是否開啟安裝時(shí)權(quán)限限制(此電腦或當(dāng)前用戶) "allowElevation": true, // 允許請求提升。 如果為false,則用戶必須使用提升的權(quán)限重新啟動(dòng)安裝程序。 "allowToChangeInstallationDirectory": true, // 允許修改安裝目錄 "installerIcon": "./build/icons/aaa.ico", // 安裝圖標(biāo) "uninstallerIcon": "./build/icons/bbb.ico", //卸載圖標(biāo) "installerHeaderIcon": "./build/icons/aaa.ico", // 安裝時(shí)頭部圖標(biāo) "createDesktopShortcut": true, // 創(chuàng)建桌面圖標(biāo) "createStartMenuShortcut": true, // 創(chuàng)建開始菜單圖標(biāo) "shortcutName": "xxxx" // 圖標(biāo)名稱 }

      如果你是在Vue項(xiàng)目中,推薦使用vue-cli-plugin-electron-builder,在vue.config.js中配置。

      pluginOptions: { electronBuilder: { noAppProtocal: true, customFileProtocol: './', chainWebpackRendererProcess: (config) => { // Chain webpack config for electron renderer process only // The following example will set IS_ELECTRON to true in your app config.plugin('define').tap((args) => { args[0]['IS_ELECTRON'] = true return args }) }, builderOptions: { appId: "", productName: "", files: ["**/*", "static/*"], asar: true, win: { icon: "./src/assets/logo/favicon.ico", target: ["zip", "nsis"], }, publish: [{ provider: "generic", url: "http://localhost:8088/", //這里配置的是安裝包和lastest.yml的服務(wù)器地址 publishAutoUpdate: true, }], nsis: { } } }

      升級(jí)更新

      方案1:

      electron-updater

      軟件升級(jí)版本,修改package.json中的version屬性

      執(zhí)行electron-builder打包,會(huì)生成新的latest.yml文件和exe文件(MAC:latest-mac.yml,zip和dmg文件)

      lectron-updater自動(dòng)會(huì)通過對應(yīng)url下的yml文件檢查更新

      方案2:

      將安裝包放在服務(wù)器,然后自定義請求下載。

      日志記錄

      第三方提供的Electron日志記錄,還是蠻多的,個(gè)人比較推薦electron-log(這個(gè)插件也支持任何 node.js 應(yīng)用程序),使用還是比較簡單的。

      npm install electron-log const log = require('electron-log'); log.info('Hello, log'); log.warn('Some problem appears');

      log文件存放的位置在:

      C:\Users"用戶"\AppData\Roaming’項(xiàng)目’\logs下面。

      不過electron-log不支持刪除log,所以需要最好在Electron中寫一個(gè)方法,定時(shí)清理log文件。

      搭配vue

      不推薦electron-vue,是在是太陳舊了。

      建議使用electron-builder

      大概的安裝流程

      初始化一個(gè)vue項(xiàng)目

      vue add electron-builder

      取消跨域限制

      一般新手開發(fā)的時(shí)候會(huì)遇到這個(gè)問題,無法訪問后臺(tái),查看各種配置,都正常,卻遲遲無法解決。

      webPreferences: { webSecurity: false, }

      全局快捷鍵

      在 Electron 中, 鍵盤快捷鍵被稱作加速器(Accelerator). 它們可以分配到應(yīng)用程序菜單中的操作上, 也可以全局注冊。注冊全局快捷方式時(shí),請注意不要和全局的快捷鍵沖突。

      帶你走入Electron開發(fā)!

      app.on('ready', function () { globalShortcut.register('CommandOrControl+Alt+A', function () { }) }) app.on('will-quit', function () { globalShortcut.unregisterAll() })

      Electron JavaScript

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:大學(xué)生學(xué)單片機(jī)怎么入門?
      下一篇:ROS機(jī)器人系統(tǒng)常規(guī)命令行操作
      相關(guān)文章
      亚洲黄色网站视频| 亚洲日本韩国在线| 国产自偷亚洲精品页65页| 国产成人综合亚洲一区| 亚洲人成电影网站免费| 久久精品亚洲AV久久久无码| 亚洲国产视频网站| 亚洲小说图片视频| 亚洲女人初试黑人巨高清| 亚洲成人黄色在线观看| 亚洲男人的天堂在线| 亚洲国产日韩女人aaaaaa毛片在线 | 久久久久亚洲av无码专区蜜芽| 在线A亚洲老鸭窝天堂| 亚洲国产成人a精品不卡在线| 亚洲精品456播放| 国产亚洲精品资在线| 亚洲熟妇无码AV在线播放| 亚洲区小说区激情区图片区| 亚洲国产精品va在线播放 | 亚洲一区二区三区国产精品无码| 亚洲丰满熟女一区二区v| 精品亚洲AV无码一区二区| 亚洲中文字幕日本无线码| 亚洲av无码无线在线观看| 亚洲精品国产综合久久一线| 国产成人综合亚洲亚洲国产第一页 | 亚洲精品第一国产综合野| 亚洲一本一道一区二区三区| 亚洲av最新在线观看网址| 免费在线观看亚洲| 久久亚洲国产成人精品无码区| 亚洲熟妇中文字幕五十中出| 亚洲人成电影亚洲人成9999网| 亚洲日韩中文字幕天堂不卡 | 国产亚洲综合网曝门系列| 亚洲国产成人久久精品动漫| 亚洲国产美女福利直播秀一区二区| 亚洲乱码在线播放| 亚洲丰满熟女一区二区哦| mm1313亚洲精品国产|