JavaScript and desktop apps Short introduction to Electron environment
Piotr Kowalski CTO@Brainhub
JavaScript ?
http://www.lingscars.com
// Load the http module to create an http server. var http = require('http'); // Configure our HTTP server to respond with Hello World to all requests. var server = http.createServer(function (request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.end("Hello Worldn"); }); // Listen on port 8000, IP defaults to 127.0.0.1 server.listen(8000); // Put a friendly message on the terminal console.log("Server running at http://127.0.0.1:8000/"); https://howtonode.org/hello-node
https://msdn.microsoft.com/en-us/library/bb384843.aspx
https://richnewman.wordpress.com/category/tabbed-document-interface/
ELECTRON!
OK, but how to start?
Necessary packages npm install --save electron
Main process Node API Creating windows Renderer process UI HTML CSS JavaScript IPC Resources extensive tasks
Resources extensive tasks Creating windows Main process Node API Renderer process UI HTML CSS JavaScript IPC Renderer process Renderer process Renderer process
app.js const app = require('electron').app; const createWindow = require('./createWindow.js'); app.on('ready', createWindow); app.on('window-all-closed', function() { app.quit(); });
createWindow.js const BrowserWindow = require('electron').BrowserWindow; const path = require('path'); const url = require('url'); let mainWindow = null; module.exports = function createWindow() { mainWindow = new BrowserWindow({width: 1024, height: 768}); mainWindow.loadURL(url.format({ pathname: path.join(__dirname, 'index.html'), protocol: 'file:', slashes: true, })); mainWindow.webContents.openDevTools(); mainWindow.on('closed', function() { mainWindow = null; }); }; module.exports.mainWindow = mainWindow;
index.html <!DOCTYPE html> <html> <head> <meta charset=”UTF-8”> <title>Hello World!</title> </head> <body> <h1>Hello World!</h1> <button id=”some-button”></button> <div id=”some-div”></div> </body> <script> require(‘./renderer.js’); </script> </html>
renderer.js // react, knockout, favorite framework :)
renderer.js // react, knockout, favorite framework :) // COMMUNICATION with main process!
IPC - demo
Native modules in Electron
https://nodejs.org/en/download/releases/
Necessary packages npm install --save-dev electron-rebuild ./node_modules/.bin/electron-rebuild
Distributing the app
Necessary packages npm install --global electron-packager electron-packager dist
Electron API
Electron API ● Accelerator ● app ● autoUpdater ● BrowserWindow ● clipboard ● Cookies ● crashReporter ● desktopCapturer ● dialog ● DownloadItem ● EnvironmentVariables ● globalShortcut ● ipcMain/ipcRenderer ● Locales ● Menu, MenuItem ● net ● powerMonitor ● process ● systemPreferences ● Tray
Thank you! :)

JavaScript and Desktop Apps - Introduction to Electron