Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Desktop JS — Empire JS 2016
Search
Evan Morikawa
May 27, 2016
Programming
610
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Desktop JS — Empire JS 2016
Desktop JS — Electron and building applications on the desktop, with Javascript.
Evan Morikawa
May 27, 2016
More Decks by Evan Morikawa
See All by Evan Morikawa
The Age of the Javascript-Powered Desktop — Dinosaur JS
emorikawa
0
950
Node on the Desktop — Node Conf Oslo 2016
emorikawa
0
150
JS Takes the Desktop — Scotland JS
emorikawa
0
230
Plugins with React & Challenges with Data
emorikawa
0
650
Space City JS — Using Electron & React to Build N1
emorikawa
1
250
MIT N1 Preview
emorikawa
0
550
Scaling Flux
emorikawa
0
620
Other Decks in Programming
See All in Programming
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
220
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.6k
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
520
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
270
What's New in Android 2026
veronikapj
0
260
Foundation Models frameworkで画像分析
ryodeveloper
1
610
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
SlackアプリとLambdaの 連携を構築した話
pawn_4_s
1
120
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
180
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
490
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
240
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
470
Joys of Absence: A Defence of Solitary Play
codingconduct
1
430
Speed Design
sergeychernyshev
33
2k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
520
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
210
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
490
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
280
Deep Space Network (abreviated)
tonyrice
0
260
Odyssey Design
rkendrick25
PRO
2
760
Transcript
Desktop JS Evan Morikawa | @e0m |
[email protected]
| May
2016
None
None
None
None
Swing Qt Cocoa GTK WPF/WinRT …
NW.js (Node Webkit)
Shell
None
None
None
None
Chromium
Chromium Browser aka Backend aka Main Process
Chromium Browser aka Backend aka Main Process C++
Chromium Browser aka Backend aka Main Process C++ Renderer Renderer
Renderer HTML / JS (DOM) HTML / JS (DOM) HTML / JS (DOM)
Chromium Browser aka Backend aka Main Process C++ Renderer Renderer
Renderer HTML / JS (DOM) HTML / JS (DOM) HTML / JS (DOM) ipc
Browser aka Backend aka Main Process Renderer Renderer Renderer HTML
/ JS (DOM) HTML / JS (DOM) HTML / JS (DOM) ipc
Nylas N1
Nylas N1 main.js
Nylas N1 main.js const win = new BrowserWindow() win.loadURL(`file://index.html`) win.show()
Nylas N1 main.js const win = new BrowserWindow() win.loadURL(`file://index.html`) win.show()
Nylas N1 main.js const win = new BrowserWindow() win.loadURL(`file://index.html`) win.show()
index.html index.js
Nylas N1 main.js const win = new BrowserWindow() win.loadURL(`file://index.html`) win.show()
index.html index.js React.render()
Nylas N1 main.js const win = new BrowserWindow() win.loadURL(`file://index.html`) win.show()
index.html index.js React.render()
Nylas N1 main.js const win = new BrowserWindow() win.loadURL(`file://index.html`) win.show()
index.html index.js React.render() Composer Work Window
None
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility
None
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail
None
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail Jasnkbusting | Worker windows
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail Jasnkbusting | Worker windows
ReactiveX.js
const q = `SELECT * FROM threads WHERE …` Rx.Observable.fromQuery(q).subscribe((threads)
=> { this.setState({threads}) })
const q = `SELECT * FROM threads WHERE …` Rx.Observable.fromQuery(q)
.filter(myFn).subscribe((threads) => { this.setState({threads}) })
const q = `SELECT * FROM threads WHERE …` Rx.Observable.fromQuery(q)
.filter(myFn) .map(mapFn).subscribe((threads) => { this.setState({threads}) })
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail SQL | Observables | Task Jasnkbusting | Worker windows
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail Jasnkbusting | Worker windows SQL | Observables | Task
None
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail React | Components as “data” Jasnkbusting | Worker windows SQL | Observables | Task
Desktop JS 1. “Native” experience 2. Performance 3. Data Storage
& Offline 4. Plugins & Extensibility Native extensions | Cross-platform CSS | Retina Detail Jasnkbusting | Worker windows SQL | Observables | Task React | Components as “data”
https://github.com/nylas/n1 Open Source
N1 Core Team https://nylas.com/team @e0m @bengotow @juanstejada @karim_hamidou @jackiehluo Drew
Regitsky
None
Evan Morikawa | @e0m |
[email protected]
| May 2016 Thank
you! Slides here
Desktop JS Evan Morikawa | @e0m |
[email protected]
| May
2016