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
Large scale apps using tools in backbone.marion...
Search
Jakob Dam Jensen
November 13, 2013
Programming
400
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Large scale apps using tools in backbone.marionette
Jakob Dam Jensen
November 13, 2013
Other Decks in Programming
See All in Programming
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
230
What's New in Android 2026
veronikapj
0
240
Google Apps Script で Ruby を動かす
kawahara
0
120
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
130
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.8k
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
150
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
710
今さら聞けない .NET CLI
htkym
0
170
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
200
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
150
FDEが実現するAI駆動経営の現在地
gonta
2
240
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
440
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
330
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Between Models and Reality
mayunak
4
380
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
230
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
650
GraphQLとの向き合い方2022年版
quramy
50
15k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
470
Transcript
None
None
NOPOINTLESSAPPS
None
• Jakob Dam Jensen • Web since 97 - JS
was frightening • ASP, Servlets, PHP indtil 2007 • Since then a lot of mobile dev • But I’ve played with most client-side libs Who am I?
None
Backbone is great • Is small • Provides structure •
Simple and elegant • I can fix bugs in it if I need to
Backbone can be a bitch • Because large scale apps
are difficult to maintain • Can become a tightly coupled mess • Not Backbones fault • Software-engineering is hard
Large Backbone apps are hard to maintain…
None
None
None
None
None
None
None
Backbone Pain Points • Routing • Internal communication (App events)
• It being small means that we’re on our own • Collection views etc. • View cleanup • No controllers.. really
But Backbone should be seen as the foundation
=)
You can fix all of this
But why should you?
None
Marionette to the rescue • Different view types + regions
• App architecture and infrastructure • Message bus • Controllers
Different view types
• View • CollectionView • ItemView • Layout • CompositeView
Different view types
None
None
None
None
None
Layout
None
None
None
None
None
None
App architecture
App Sup-App Sup-App Sup-App Sup-App
Blink Dashboard Members Calendar Account management List Show New List
Edit Show New List Edit Show New List Edit Show New Edit Index Index Index Index
None
None
None
None
None
Keeping things loose
Blink (App) Dashboard Members Calendar Account management List Show New
List Edit Show New List Edit Show New List Edit Show New Edit Index Index Index Index
Message bus: Commands • Can set command handler • App.commands.setHandler
name, function • Can execute commands • App.execute ‘name’, [function_options]
• edit:calendar_events • index:calendar_events • list:calendar_events • new:calendar_events • show:calendar_events
Calendar New List Edit Show Index Message bus: Commands
None
App.execute(‘index:calendar_events’, {event: event})
None
None
None
Message bus: Req Res • Can set request handlers •
App.reqres.setHandler ‘name’, function • Can request objects • App.request ‘name’, [options]
None
None
Message bus: vent • Can observe vent event • App.vent.on
‘name’, callbackFunction • Can trigger vent event • App.vent.trigger ‘name’, [options]
Blink (App) Dashboard Members Calendar Account management List Show New
List Edit Show New List Edit Show New List Edit Show New Edit Index Index Index Index
• Main app in module acts as facade • Commands
set here • Routing set here Modules encapsulates responsibilities Calendar New List Edit Show Index
None
None
Blink (App) Dashboard Members Calendar Account management List Show New
List Edit Show New List Edit Show New List Edit Show New Edit Index Index Index Index
None
What now?
None
Questions?
Anybody looking for freelance developers? =)
Thanks