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
Reducing complexity with a Component API
Search
Ianfeather
April 25, 2014
220
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Reducing complexity with a Component API
Ianfeather
April 25, 2014
More Decks by Ianfeather
See All by Ianfeather
Building Resilient Front End Systems (Smashingconf)
ianfeather
0
140
Building Resilient Frontend Systems (All Day Hey)
ianfeather
1
580
Building Resilient Frontend Systems (@frontendne)
ianfeather
1
210
Testing Without Assertions
ianfeather
0
160
Building Resilient Frontend Systems - NationJS
ianfeather
0
230
Establishing Performance Contexts
ianfeather
0
140
Web Fonts and Performance
ianfeather
0
240
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
A Tale of Four Properties
chriscoyier
163
24k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Transcript
Reducing Complexity with a Component API Ian Feather
Complexity
High risk, high fear
Intertwined
Low reuse
Technical debt
! Complexity at " ";
None
This time we’ll nail it
HTML CSS JS SHARED SPECIFIC HOTELS The rebuild
HTML CSS JS SHARED SPECIFIC High Reuse Low Reuse HOTELS
The rebuild
HTML CSS JS SHARED SPECIFIC High Reuse Strong Caching Low
Reuse Weak Caching HOTELS The rebuild
HTML CSS JS SHARED SPECIFIC High Reuse Strong Caching High
Risk Low Reuse Weak Caching Low Risk HOTELS The rebuild
HTML CSS JS SHARED SPECIFIC HOTELS PLACES SEARCH THEME High
Reuse Strong Caching High Risk Low Reuse Weak Caching Low Risk The rebuild
HTML CSS JS SHARED SPECIFIC HOTELS PLACES SEARCH THEME High
Reuse Strong Caching High Risk Low Reuse Weak Caching Low Risk The rebuild
HTML CSS JS SHARED SPECIFIC HOTELS PLACES SEARCH THEME High
Reuse Strong Caching High Risk Low Reuse Weak Caching Low Risk The rebuild
This model doesn’t favour the front end
We need a different solution
None
It should feel as easy as working on a small
site
A Style Guide would help, right?
/* Styleguide [Buttons] ! <button class=“btn-primary”>Button</button> <button class=“btn-secondary”>Button</button> ! */
! .btn—primary { background: blue; } ! .btn—secondary { background: red; }
None
A Style Guide isn’t the mechanism
We need to decouple our UI Layer from the application
Component Layer & API
What is a component?
Create an API to standardise fetching these components
None
= component(“form/search”, { label: search })
<form action="/search"> <label class="accessibility" for="search-q">Search</label> <input id="search-q" name="q" tabindex="1" type=“search"/>
<button name="search-q-submit" type="submit">Search</button> </form> = component(“form/search”, { label: search })
None
component(“input/search”, { label: search, autocomplete: true })
<form action="/search"> <label class="accessibility" for="search-q">Search</label> <input class="js-autocomplete" id="search-q" name=“q" />
<button name="search-q-submit" type="submit">Search</button> <div class="js-autocomplete-container"></div> </form> component(“input/search”, { label: search, autocomplete: true })
None
component("cards/collection_card", { double?: true, slug: "/top-things-to-do—in-paris", title: "Top
things to do in Paris", image_url: "/assets/paris.jpg" })
None
None
SPECIFIC Low Risk Low Reuse HOTELS PLACES SEARCH THEME HTML
CSS JS SHARED High Risk High Reuse
SPECIFIC Low Risk Low Reuse HOTELS PLACES SEARCH THEME HTML
CSS JS SHARED High Risk High Reuse Low Risk High Reuse Component Layer & API
Rizzo ! Component Layer, API & Style Guide
Our Style Guide can be just another data-driven application
A ready-made visual regression test suite
Enables Style Guide driven development
None
None
Why would you want to use a Component API?
You’ll have happier developers
You’ll have visual consistency
You’ll be able to refactor easily
You won’t have to tweak padding values (as much)
It can feel like working on a small site
Thank you @ianfeather http://rizzo.lonelyplanet.com