2020. 8. 10. 19:42ㆍElectron
* 원하는 로직
처음접속시 버전체크 페이지로 연결
-> 버전체크 완료후 토큰 확인후 인덱스 페이지로 연결
* 실패한 로직
[main.js]
function start(){
createWindow();
}
function createWindow(){
if(versionCk) //기본 인덱스파일 로드 (버전체크 완료를 의미)
else //버전체크파일 로드(버전체크 미완료)
}
ipcMain.on('check-version', (event, arg) => {
versionCk = true;
start();
event.returnValue = 0;
})
app.on('window-all-closed', function () {
if (process.platform !== 'darwin'){
db.close();
app.quit();
}
[버전체크.js]
//버전체크후 문제없으면 호출
ipcRenderer.sendSync('check-version');
return;
window.close();
=> 위의 실패한 로직대로 실행하면 새로운 윈도우를 만들기 이전에 버전체크 window가 삭제됨. app에서 모든 window가 삭제된 것으로 판단하여 app자체를 종료함
* 새로운로직
[main.js]
let versionCkWindow;
function start(){
if(versionCk) createWindow();//mainWindow 생성(버전체크 완료를 의미)
else createVersionCkWindow(); //versionCkWindow 생성(버전체크 미완료)
}
function createWindow(){
mainWindow 생성
versionCkWindow.close();
}
function createVersionCkWindow(){
versionCkWindow생성
}
ipcMain.on('check-version', (event, arg) => {
versionCk = true;
start();
event.returnValue = 0;
})
app.on('window-all-closed', function () {
if (process.platform !== 'darwin'){
db.close();
app.quit();
}
[버전체크.js]
//버전체크후 문제없으면 호출
ipcRenderer.sendSync('check-version');
=> 사실상 해당로직의 순서는 먼저 버전체크윈도우를 생성하고, 해당 버전체크가 끝나면 메인윈도우를 생성한다. 그후에 버전체크를 닫는다.