Build Cross Platform Desktop
Application with Electron
@kidwm
1
Slide 2
Slide 2 text
Why to Build
Desktop
Application?
Slide 3
Slide 3 text
Desktop Factors
• Massive Assets (Game)
• Quick Typing (Messenger)
• Urgent Usage (Office)
• Frequent Access (Music)
Show Logo to your user constantly
3
CEF integrated with nodejs
• brackets-shell
• NW.js (node-webkit)
• Electron (atom-shell)
Electron everywhere!
7
Slide 8
Slide 8 text
What is Electron?
Slide 9
Slide 9 text
History
• Started in January 2013
• Built initially for the Atom text editor
• Renamed from atom-shell
• use libchromiumcontent and Brightray to wrap Chromium Content
module
9
Slide 10
Slide 10 text
browser process
renderer
process
renderer renderer
process process
ipc
Slide 11
Slide 11 text
main.js
var app = require('app') ;
app.on('ready', function() {
Slide 12
Slide 12 text
electron-prebuilt
sudo npm install --global electron-prebuilt
electron main.js
12
Slide 13
Slide 13 text
Features
Slide 14
Slide 14 text
require modules
built-in modules and npm packages
modules for main process and renderer process
read module documentation
14
Slide 15
Slide 15 text
Inter-Process
Communication
Slide 16
Slide 16 text
ipc
• ipc.send(channel, args)
• ipc.on(channel, callback)
browser process
renderer
process
renderer renderer
process process
ipc
16
remote
• remote.require(module)
• remote.getCurrentWindow()
• remote.getGlobal(name)
browser process
renderer
process
renderer renderer
process process
ipc
18
Pros
• Latest nodejs and Chrome integration
• Expose many browser features
• Actively Developing
• Update with Upstream Quickly
• Great Community Support
41
Slide 42
Slide 42 text
Cons
• binary size is big⋯
• limited native system features (still improving)
• lack some browser features (eg. workers)
but you have nodejs & npm!
42
Slide 43
Slide 43 text
Who uses
Electron?
Slide 44
Slide 44 text
Kitematic
Slide 45
Slide 45 text
No content
Slide 46
Slide 46 text
Slack
Slide 47
Slide 47 text
Caprine
Slide 48
Slide 48 text
nodeshot
Slide 49
Slide 49 text
Nightmare
Slide 50
Slide 50 text
Kaku
Slide 51
Slide 51 text
Mojibar
Slide 52
Slide 52 text
Plasmon
Slide 53
Slide 53 text
Plasmon
• http://pcman.ptt.cc/
• Powered by pcman.js
• currently focus in Mac OSX
• Welcome contribution
53