Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br...

34
Een introductie door Kilian Valkhof

Transcript of Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br...

Page 1: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Een introductie door Kilian Valkhof

Page 2: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Kilian ValkhofUser Experience Developer

Lid van Electron Maintainers team

Page 3: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Partner bij FluxilityFull service internetbureau uit Zoetermeer: apps, sites en

maatwerk. 15 man, begonnen in 2005

Page 4: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Trimage (in Qt)

f.lux linux gui (in GTK)

FromScratch (in Electron!)

Page 5: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

WAT IS

Page 6: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Een om desktop applicaties te makenmet , op

LibraryJavascript, HTML en CSS Windows,

Mac en Linux

Page 7: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

...maar dan modern

Page 8: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Wie gebruikt Electron?

en honderden meer: electron.atom.io/apps/

Page 9: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Hoe werkt Electron

Page 10: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Electron applicaties draaien twee processen:Main & Renderer

Page 11: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

MainNode.js: App en Windowbeheer, integratie met OS en

Filesystem

Page 12: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

RendererChromium: één per window, DOM die je kent + wat extra's

Page 13: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

IPCInterprocess communication

Page 14: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Voordelen

Page 15: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Alles in één taal: JavascriptRenderen van een pagina, én native API's

Page 16: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Alles in één browser: ChromeWerkt het voor jou, dan werkt het voor iedereen

Page 17: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Toegang tot heel NPMMeer dan 416K+ packages, inclusief leftpad!

Page 18: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Devtools in je applicaties!

Page 19: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Kies je eigen development flowGa los met: Webpack, PostCSS, ES6, Babel, Typescript, Elm of

what je wilt!

Page 20: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

IN CODE

Page 21: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Package.jsonNet als andere Node apps

Main.jsMain Process: app en window beheer

Index.htmlRenderer process: Je UI

Page 22: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

package.json "name": "electron­voorbeeld", "version": "1.0.0", "main": "main.js", "devDependencies": "electron": "^1.6.0"

Page 23: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

main.jsconst electron = require('electron'); const app = electron.app; const BrowserWindow = electron.BrowserWindow ;

let mainWindow;

app.on('ready', () => mainWindow = new BrowserWindow( width: 800, height: 600); mainWindow.loadURL('file://' + __dirname + '/index.html'); );

app.on('window­all­closed', () => app.quit(); );

Page 24: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

index.html<!doctype html> <html> <head> <meta charset="UTF­8"> <title>Hallo Electron!</title> </head> <body> <h1>Hallo Electron!</h1> <p> We gebruiken Electron <script>document.write(process.versions.electron) </script> </p> </body></html>

Page 25: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

package.json "name": "electron­voorbeeld", "version": "1.0.0", "main": "main.js", "devDependencies": "electron": "^1.6.0" , "scripts": "start": "electron ."

Page 26: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

$ npm start

Page 27: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Ook mogelijk:Achtergrondkleur, Frameless windows, transparancy, hidden

windows, macOS Vibrancy

Page 28: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Extra API's:Native menu'sNative dialogsNative noticationsautoUpdater

Page 29: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Niet alleen webpagina'sSystem Tray applicationsToegang tot mic + camera, clipboard en global shortcuts

Page 30: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

UI in HTMLDoe wat je wilt! Custom UI, Bootstrap, Material UI

Page 31: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Specifiek voor OSX: Photonkit

Page 32: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

PackagingCross platform executables voor Mac, Windows en Linux.

electron-packager

Of met installers: electron-builder

Ook voor de Windows en Mac app stores!

Page 33: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

Meer lerenelectron/electron-api-demos

Page 34: Een introductie door Kilian ValkhofRenderen van een pagina, én native API's All es in éé n br owse r: Chr ome Werkt het voor jou, dan werkt het voor iedereen Toega ng to t hee l

DANK!Vragen?

Ik ben hier te vinden:

, ,

[email protected] https://kilianvalkhof.com/kilianvalkhof /kilian