浣滆€咃細Kurosaki鏈妭鏃ㄥ湪鎬荤粨Electronwindow寮€鍙戜腑鍙兘閬囧埌鐨勯棶棰橈紝鍋氫竴涓€荤粨锛屼互鍚庨亣鍒伴棶棰樹細缁х画鏇存柊銆?.绐楀彛闂儊闂銆俢onst{BrowserWindow}=require('electron');constwin=newBrowserWindow();win.loadURL('https://github.com');浣跨敤newBrowserWindow()鍒涘缓涓€涓獥鍙o紝濡傛灉涓嶅仛浠讳綍閰嶇疆锛屼細鍑虹幇杩欎釜绐楀彛锛岄粯璁ゆ槸鐧借壊鐨勶紱姝ゆ椂浣跨敤win.loadURL('https://github.com')鍔犺浇杩滅▼璧勬簮锛屼細閲嶆柊娓叉煋绐楀彛锛屽鑷寸獥鍙i棯鐑併€傝В鍐虫柟妗堬細const{BrowserWindow}=require('electron');constwin=newBrowserWindow({show:false});win.loadURL('https://github.com');win.once('ready-to-show',()=>{win.show();})2銆佽€佺増鏈琖indow7绯荤粺涓嬶紝绐楀彛鍑虹幇鐧藉睆闂銆傚叕鍙稿紑鍙戠殑Electron搴旂敤绋嬪簭鏄拡瀵规暀甯堢殑銆傛湁鐨勮€佸笀鐢ㄧ殑鏄€佺増鏈殑Windows7锛岃嚜鍔ㄦ洿鏂版槸鍏抽棴鐨勩€傝В鍐虫柟娉曪細瀹夎鏈€鏂扮増.NETFramework瀹樻柟涓嬭浇鍦板潃锛歨ttps://dotnet.microsoft.com/download/dotnet-framework鐩稿叧闂锛歨ttps://github.com/electron/electron/issues/251863銆傚湪macOS璁$畻鏈哄叧闂笅锛孍lectron搴旂敤绋嬪簭鍙槻姝㈠叧鏈洪棶棰樸€俶acOSshutdown浼氬叧闂墍鏈夌獥鍙o紝濡傛灉鏈?/绐楀彛娉ㄥ唽鍏抽棴浜嬩欢win.on('close',(event)=>{event.preventDefault()//闃绘绐楀彛鍏抽棴}),浼氬鑷撮樆濉炵郴缁熷叧闂€?銆佸湪Window绯荤粺涓嬶紝浣跨敤hide()鏂规硶鍙兘浼氬鑷撮〉闈㈡寕璧凤紝鏃犳硶浣跨敤銆傝繖绉嶆儏鍐靛彲鑳芥槸璋冪敤hide()鍚庢病鏈夎皟鐢╯how()鏂规硶锛岃€屽彧鏄皟鐢ㄤ簡restore()鏂规硶锛屼細瀵艰嚧椤甸潰鎸傝捣锛屾棤娉曚娇鐢ㄣ€傛墍浠ュ繀椤诲湪restore()鏂规硶涔嬪悗鍔犱笂show()鏂规硶5.鏂扮増Electron浣垮緱娓叉煋杩涚▼鏃犳硶璁块棶杩滅▼妯″潡銆傚垏鎹㈠埌鏂扮増Electron锛屾洿鏂版柊鐨凚rowserWindow(options)閰嶇疆锛屽湪webPreferences涓厤缃甧nableRemoteModule:true6.macOS涓嬬殑鏃犺竟妗嗙獥鍙o紝椤堕儴鎷栧姩闂銆傚垱寤虹獥鍙f椂锛岄厤缃畃reload.js锛屼唬鐮佸涓嬶細椤剁骇topDiv.style.top='0'topDiv.style.left='0'topDiv.style.height='20px'//椤堕儴20px鍙互鎷栧姩topDiv.style.width='100%'//瀹藉害100%topDiv.style.zIndex='9999'//鎮诞鍦ㄦ渶澶栧眰topDiv.style.pointerEvents='none'//鐢ㄤ簬鐐瑰嚮閫氳繃topDiv.style['-webkit-user-select']='none'//绂佹閫夋嫨texttopDiv.style['-webkit-app-region']='drag'//鎷栧姩document.body.appendChild(topDiv)//娣诲姞鑺傜偣}window.addEventListener('DOMContentLoaded',functiononDOMContentLoaded(){initTopDrag()})7.Windows绯荤粺涓嬶紝鑿滃崟鏄殣钘忕殑銆傚湪Window绯荤粺涓嬶紝鑿滃崟闈炲父闅剧湅銆傛湁闅愯棌鑿滃崟鍜屼娇鐢ㄦ棤杈规绐楀彛涓ょ鏂瑰紡锛屽幓鎺夎彍鍗曞拰杈规锛岃嚜宸卞啓涓€涓帶浠惰竟妗嗐€傜洰鍓嶏紝github涓婃湁杩欎簺搴擄紱浣跨敤autoHideMenuBar:true浣嗘寜涓婣LT閿彍鍗?.灏嗗嚭鐜扮獥鍙d箣闂寸殑閫氫俊銆備富杩涚▼鍒涘缓涓€涓獁indow骞堕厤缃畃reload.js锛屽苟灏嗛€氫俊鏂规硶鎸傝浇鍒皐indow/***杩欐槸window閫氫俊绀轰緥浣跨敤鐨刾reload銆?preload鎵ц椤哄簭鍦╳indowjs鎵ц椤哄簭涔嬪墠*/import{ipcRenderer,remote}from'electron'const{argv}=require('yargs')const{BrowserWindow}=remote//鐖剁獥鍙g洃鍚瓙绐楀彛浜嬩欢ipcRenderer.on('communication-to-parent',(event,msg)=>{alert(msg)})const{parentWindowId}=argvif(parentWindowId!=='undefined'){constparentWindow=BrowserWindow.fromId(parentWindowIdasnumber)//鎸傝浇鍒扮獥鍙?/@ts-ignorewindow.send=(params:any)=>{parentWindow.webContents.send('communication-to-parent',params)}}鍒涘缓绐楀彛骞朵紶鍏dbrowserWindow.webContents.on('new-window',(event,url,frameName,disposition)=>{event.preventDefault()//閫氳繃BrowserWindow鍒涘缓绐楀彛constwin=newBrowserWindow({show:false,webPreferences:{preload:preload.js,additionalArguments:[`--parentWindow=${browserWindow.id}`]//浼犻€掔埗绐楀彛鐨刬d}});win.loadURl(url);win.once('ready-to-show',()=>{win.show()})})鐖跺瓙绐楀彛娌℃湁涓婇潰閭d箞楹荤儲锛屽彧闇€瑕侀厤缃畃reload锛屽疄鐜癷mport{remote,ipcRenderer}from'electron'//鐖剁獥鍙g洃鍚瓙绐楀彛浜嬩欢ipcRenderer.on('communication-to-parent',(event,msg)=>{alert(msg)})constparentWindow=remote.getCurrentWindow().getParentWindow()//@ts-ignorewindow.sendToParent=(params:any)=>parentWindow.webContents.send('communication-to-parent',params)娓叉煋杩涚▼鍒涘缓绐楀彛娓叉煋杩涚▼閫氫俊寰堢畝鍗曪紝閫氳繃window.open锛寃indow.open浼氳繑鍥炰竴涓獁indowObjectReference锛岄€氳繃postMessage鍙互鍜寃indow閫氫俊.open鏀寔浼犺緭Preload绛夐厤缃€?.绐楀彛鍏ㄥ睆闂銆傚彲浠ヤ娇鐢ㄦ寜閽叏灞忓拰閫€鍑哄叏灞忥紝浣嗘槸鍏堢偣鍑诲乏涓婅馃殽鍏ㄥ睆锛屽啀浣跨敤鎸夐挳閫€鍑哄叏灞忥紝鏄笉鍙互鐨勩€傚洜涓烘棤娉曠煡閬撳綋鍓嶇姸鎬佹槸鍚﹀叏灞忋€傞厤缃畃reload锛屼娇鐢‥lectron鍐呯疆鐨勫叏灞廇PIimport{remote}from'electron'constsetFullScreen=remote.getCurrentWindow().setFullScreenconstisFullScreen=remote.getCurrentWindow().isFullScreenwindow.setFullScreen=setFullScreenwindow.isFullScreen=isFullmacOS10寮€鍙戠幆澧冿紝鍙兘鐨勩€傚瓨鍦ㄦ枃浠惰鍙栨潈闄愰棶棰樸€傚湪macOS涓嬶紝鎴戜滑鍚姩Electron搴旂敤绋嬪簭锛屽畠浣嶄簬Application鏂囦欢澶逛箣澶栧苟鍦ㄥ彧璇荤鐩樻槧鍍忎笂杩愯銆傚嚭浜庡畨鍏ㄨ€冭檻锛岄渶瑕佺敤鎴锋巿鏉冿紝electron-util宸茬粡鍋氫簡寰堝ソ鐨勫皝瑁呫€傛偍鍙互鍦╡lectron-util涓娇鐢╡nforceMacOSAppLocation鏂规硶銆傜數瀛愬伐鍏风殑鏂囨。銆俢onst{app,BrowserWindow}=require('electron')const{enforceMacOSAppLocation}=require('electron-util')functioncreateWindow(){enforceMacOSAppLocation()constmainWindow=newBrowserWindow({瀹藉害锛?00锛岄珮搴︼細600锛寃ebPreferences:{nodeIntegration:true,},})mainWindow.loadFile('index.html')}app.on('ready',createWindow)app.on('window-all-closed',function(){if(process.platform!=='darwin'){app.quit()}})app.on('activate',function(){if(BrowserWindow.getAllWindows().length===0){createWindow()}})enforceMacOSAppLocation鏂规硶灏佽'usestrict';constapi=require('./api');constis=require('./is');module.exports=()=>{if(is.development||!is.macos){杩斿洖;}濡傛灉(api.app.isInApplicationsFolder()){杩斿洖;}constappName='name'鍦╝pi.app涓紵api.app.name:api.app.getName();constclickedButtonIndex=api.dialog.showMessageBoxSync({type:'error'锛屾秷鎭細'绉诲姩鍒板簲鐢ㄧ▼搴忔枃浠跺す锛?锛岃缁嗕俊鎭細`${appName}蹇呴』浣嶄簬搴旂敤绋嬪簭鏂囦欢澶逛腑鎵嶈兘姝g‘杩愯銆俙锛屾寜閽細['绉诲姩鍒板簲鐢ㄧ▼搴忔枃浠跺す'锛?閫€鍑?{appName}`],defaultId:0,cancelId:1});濡傛灉(clickedButtonIndex===1){api.app.quit();杩斿洖;}api.app.moveToApplicationsFolder({conflictHandler:conflict=>{if(conflict==='existsAndRunning'){//鏃犳硶鏇挎崲搴旂敤绋嬪簭鐨勬椿鍔ㄧ増鏈琣pi.dialog.showMessageBoxSync({type:'error',娑堟伅锛歚鍙︿竴涓増鏈殑${api.app.getName()}褰撳墠姝e湪杩愯銆傞€€鍑哄畠锛岀劧鍚庡啀娆″惎鍔ㄨ繖涓増鏈殑搴旂敤绋嬪簭銆俙,buttons:['OK']});api.app.quit();}returntrue;}});};濡傛灉浣犻亣鍒板鏋滃ぇ瀹跺Electron鏈変粈涔堥棶棰橈紝鍙互璇勮锛屾垜浠竴璧疯В鍐筹紝涓€璧锋垚闀垮Electron鎰熷叴瓒o紵璇峰叧娉ㄦ垜浠殑寮€婧愰」鐩瓻lectronPlayground锛屽甫浣犲揩閫熶笂鎵婨lectron銆傛瘡鍛ㄤ簲鎴戜滑閮戒細鎸戦€変竴浜涙湁瓒g殑鏂囩珷鍜屾柊闂讳笌澶у鍒嗕韩銆傚揩鏉ュ叧娉ㄦ垜浠殑灏忛鍛ㄥ垔鍚с€傛垜浠槸濂芥湭鏉ュ皬榛戞澘鐨勫墠绔妧鏈洟闃熴€傛垜浠細缁忓父涓庢偍鍒嗕韩鏈€鏂版渶閰风殑琛屼笟鎶€鏈煡璇嗐€傛杩庣煡涔庛€佹帢閲戙€丼egmentfault銆丆SDN銆佺畝涔︺€佸紑婧愪腑鍥姐€佸崥瀹㈠洯鍏虫敞鎴戜滑銆?/p>