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
FastBoot™ and Beyond
Search
Godfrey Chan
September 29, 2015
Programming
0
150
FastBoot™ and Beyond
Godfrey Chan
September 29, 2015
Tweet
Share
More Decks by Godfrey Chan
See All by Godfrey Chan
Virtual EmberConf 2022: Platform State of the Union
chancancode
0
240
Virtual EmberConf 2021: Platform State of the Union
chancancode
0
210
Virtual EmberConf 2020: Platform State of the Union
chancancode
1
330
Thinking in TypeScript
chancancode
0
260
The Lifecycle of a Rails Request
chancancode
3
14k
Dropping Down To The Metal™ (2018)
chancancode
0
110
Using Skylight to Solve Real-World Performance Problems
chancancode
1
360
Prying Open The Black Box (EmberConf 2018)
chancancode
0
370
Bending The Curve: Putting Rust in Ruby with Helix
chancancode
2
2.7k
Other Decks in Programming
See All in Programming
Vibe Coding の話をしよう
schroneko
14
3.9k
AIコーディングの理想と現実
tomohisa
38
40k
CQRS/ESのクラスとシステムフロー ~ RailsでフルスクラッチでCQRSESを組んで みたことから得た学び~
suzukimar
0
130
ComposeでのPicture in Picture
takathemax
0
140
Design Pressure
hynek
0
170
CursorとDevinが仲間!?AI駆動で新規プロダクト開発に挑んだ3ヶ月を振り返る / A Story of New Product Development with Cursor and Devin
rkaga
5
1.4k
監視 やばい
syossan27
12
10k
M5UnitUnified 最新動向 2025/05
gob
0
140
エンジニア向けCursor勉強会 @ SmartHR
yukisnow1823
3
13k
状態と共に暮らす:ステートフルへの挑戦
ypresto
3
1.3k
OpenTelemetryで始めるベンダーフリーなobservability / Vendor-free observability starting with OpenTelemetry
seike460
0
130
파급효과: From AI to Android Development
l2hyunwoo
0
170
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
68
11k
GraphQLとの向き合い方2022年版
quramy
46
14k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Designing for Performance
lara
608
69k
Adopting Sorbet at Scale
ufuk
76
9.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
The Language of Interfaces
destraynor
158
25k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Gamification - CAS2011
davidbonilla
81
5.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.4k
Transcript
Godfrey Chan @chancancode
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
Ember 1.0
<script src=“ember.js”> <script src=“my-app.js”> DOM Ready Boot App appendTo(document.body)
<script src=“ember.js”> <script src=“my-app.js”> DOM Ready Boot App appendTo(document.body)
TAKE OVER ALL THE DOM!
The One True App™
Testing
Emergency Brake
App.setupForTesting()
App.setupForTesting() <script src=“ember.js”> <script src=“my-app.js”> DOM Ready Boot App appendTo(document.body)
App.setupForTesting() <script src=“ember.js”> <script src=“my-app.js”> DOM Ready Boot App appendTo(document.body)
Actually, never mind!
App.setupForTesting() <script src=“ember.js”> <script src=“my-app.js”> Test Setup Boot App appendTo(“#qunit-fixture”)
Test Teardown App.reset()
FastBoot™
None
<noscript> Sorry </noscript>
☁ Web Server
☁ Web Server GET /posts/123-ember-2-0-…
☁ Web Server 200 OK <html> <head> <title>Ember 2.0…</title> </head>
<body> <article>…</article> </body> </html>
Load Ember Boot Worker Boot App Render Destroy Worker GET
/posts/123-ember-2-0-… 200 OK <html> <head> <title>Ember 2.0…</title> </head> <body> <article>…</article> </body> </html>
Load Ember Boot Worker Boot App Render App.reset() GET /posts/123-ember-2-0-…
200 OK <html> <head> <title>Ember 2.0…</title> </head> <body> <article>…</article> </body> </html>
200 OK <html> <head> <title>Ember 2.0…</title> </head> <body> <article>…</article> </body>
</html> Render 200 OK <html> <head> <title>Ember 2.0…</title> </head> <body> <article>…</article> </body> </html> GET /posts/123-ember-2-0-… Boot Worker Render instance.destroy() GET /posts/123-ember-2-0-… Boot Instance instance.destroy( Load Ember Boot Instance
Ember 1.12
Ember.ApplicationInstance Ember.Application
Ember.ApplicationInstance Ember.Application
App.visit(“/posts/123-ember-2-0…”)
⚠ Experimental APIs
For Your Eyes Only
PR #12394 Revisiting the visit API (aka FastBoot™)
Testing
<script src=“ember.js”> <script src=“my-app.js”> Test Setup Boot Instance … instance.destroy()
Manual Boot
import MyApp from 'my-app'; $(function() { let App = MyApp.create({
autoboot: false }); App.visit('/demo', { location: 'none', rootElement: '#demo' }); }); For Your Eyes Only
Multiple Instances
import MyApp from 'my-app'; $(function() { let App = MyApp.create({
autoboot: false }); let sessionId = MyApp.generateSessionID(); App.visit(`/matches/join/${sessionId}`, { rootElement: '#left' }); App.visit(`/matches/join/${sessionId}`, { rootElement: '#right' }); }); For Your Eyes Only
Widgets
ember-islands
Embedding?
PR #12394 Revisiting the visit API (aka FastBoot™)
@chancancode