desktop apps in a javascript world - electron
TRANSCRIPT
![Page 1: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/1.jpg)
Desktop Apps in a Javascript World
Marc MacLeod@marbemac
![Page 2: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/2.jpg)
Me
PHP -> Ruby -> Python -> Node / Go
Vanilla -> Backbone -> Ember -> Meteor -> React
Backend
Frontend
<3 Techstars & Austin
![Page 4: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/4.jpg)
JS Desktop Apps? What’s the difference?
Web
Desktop
![Page 5: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/5.jpg)
access to node
JS Desktop Apps? What’s the difference?
access to packages (npm)
access to OS specific functionality / features
app stores!
![Page 6: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/6.jpg)
Electron Node-Webkit (NW.js) MacGap
Sponsor Github Intel N/A
Node? Yes Yes No
OS X Store Maybe Maybe Yes
Windows Store Yes Yes No
Auto-Update Included? Yes No No
Native OS Bindings Yes Yes Yes
Size > 60mb > 60mb ~1mb
The Landscape
![Page 8: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/8.jpg)
https://github.com/marbemac/electric-tunes
Let’s build an app
![Page 9: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/9.jpg)
Main Process vs Render Processes
main.js
![Page 10: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/10.jpg)
Sprinkle in some Node (io.js)
app.js
![Page 11: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/11.jpg)
Sprinkle in some native
main.js
![Page 12: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/12.jpg)
IPC!
main -> renderrender -> main
Communicating between main and render processes
![Page 13: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/13.jpg)
electron-packager
Distribution
https://github.com/maxogden/electron-packager
![Page 14: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/14.jpg)
Storage / Persistence
HTML5 Local Storage
NEDB (node)https://github.com/louischatriot/nedb
PouchDB (javascript / couch db)http://pouchdb.com/
![Page 15: Desktop Apps in a Javascript World - Electron](https://reader035.vdocuments.site/reader035/viewer/2022062412/5871aad11a28abda6a8b56ed/html5/thumbnails/15.jpg)
What else?
Managing a local http server
Manage command line apps via node child_process / spawn
Load dev tools extensions
Auto-Updates (Squirrel Framework)