Last active
June 10, 2020 02:55
-
-
Save gdonega/264ddc4b79af31b01bb0f142617cd514 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Depencias gerais | |
const { app, protocol, BrowserWindow } = require('electron') | |
const isDev = process.env.NODE_ENV === "development"; // Boolean gerado através da variavel de ambiente que define se o aplicativo está rodando como desenvolvimento ou produção | |
// Dependencias do desenvolvimento | |
const port = 40992; // Deve ser a mesma porta do Servidor Vue.js (webpack de desenvolvimento): no arquivo que está em app/config/vue/webpacks/dev.js (partindo da raiz do projeto) | |
const selfHost = `http://localhost:${port}`; | |
// Dependencias de produção | |
const Protocol = require("./app/config/electron/protocol"); | |
function createWindow () { | |
// Caso estja em produção | |
// Registra um protocolo Handler que saberá pegar o arquivo da compilação do vue que será exibido | |
// (Precisa ocorrer antes de criar ou carregar a pagina do browser) | |
if (!isDev) protocol.registerBufferProtocol(Protocol.scheme, Protocol.requestHandler) | |
// Cria uma janela de navegação. | |
const win = new BrowserWindow({ | |
width: 800, | |
height: 600, | |
webPreferences: { | |
nodeIntegration: false // false, por questão de segurança | |
} | |
}) | |
// Caso estja em desenvolvimento | |
if (isDev) { | |
// Carrega a página do Servidor Vue.js (webpack de desenvolvimento) | |
win.loadURL(selfHost) | |
// Open the DevTools. | |
win.webContents.openDevTools() | |
} else { | |
// Carrega o arquivo estático (Compilado do vuejs) através do protocolo | |
// Está sendo carregado o arquivo html do webpack Vue.js | |
win.loadURL(`${Protocol.scheme}://rse/index.html`) | |
} | |
} | |
// Permite que o nosso scheme tenha acesso e carregue os arquivos necessários | |
// E também ao armazenamento local, cookies, etc... | |
// Precisa ser chamado antes do app estiver pronto (Ready) | |
// (https://electronjs.org/docs/api/protocol#protocolregisterschemesasprivilegedcustomschemes) | |
protocol.registerSchemesAsPrivileged([{ | |
scheme: Protocol.scheme, | |
privileges: { | |
standard: true, | |
secure: true | |
} | |
}]) | |
// Esse método será chamado quano o Electron terminar de | |
// iniciar e estiver pronto para criar o broser window. | |
// Algumas APIs podem ser usadas somente depois que este evento ocorre. | |
app.whenReady().then(createWindow) | |
// Finaliza quando todas as janelas forem fechadas | |
app.on('window-all-closed', () => { | |
// No macOS é comum para aplicativos e sua barra de menu | |
// permaneçam ativo até que o usuário explicitamente encerre com Cmd + Q | |
if (process.platform !== 'darwin') { | |
app.quit() | |
} | |
}) | |
app.on('activate', () => { | |
// No macOS é comum a re-criação da janela no aplicativo quando o | |
// icone da barra for clicado e não outras janelas abertas | |
if (BrowserWindow.getAllWindows().length === 0) { | |
createWindow() | |
} | |
}) | |
// Nesse arquivo você pode incluir os outros processos principais do seu aplicativo | |
// Você também pode colocar eles em arquivos separados e requeridos-as aqui. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment