KEMBAR78
Vue.js Component Tools | PDF
Vue.js Component Tools | @vannsl
Vue.js Component Tools
Vanessa Böhner
Frontend Developer, Munich
@vannsl
@vannsl
vannsl.io
Vue.js Component Tools | @vannsl
Core Features
• Single File Components

• Declarative Rendering
Vue.js Component Tools | @vannsl
CTA Button
active disabled
Vue.js Component Tools | @vannsl
CTA Button HTML
active disabled
Vue.js Component Tools | @vannsl
CTA Button CSS
Vue.js Component Tools | @vannsl
CTA Button JS
Vue.js Component Tools | @vannsl
Project structure
styles.css
index.html
script.js
Vue.js Component Tools | @vannsl
Project structure
styles.css
example1.html
example2.html
example3.html
example1.js
example2.js
example3.js
Vue.js Component Tools | @vannsl
Relaunch / Redesign
Vue.js Component Tools | @vannsl
+ CSS & JS changes
Vue.js Component Tools | @vannsl
Project structure
styles.css
example1.html
example2.html
example3.html
example1.js
example2.js
example3.js
Vue.js Component Tools | @vannsl
Single File
Components
Vue.js Component Tools | @vannsl
Single File Component
Vue.js - Single File Component
Vue.js Component Tools | @vannsl
SFC - Template
curly braces
v-if / v-else
v-for
Vue.js Component Tools | @vannsl
Declarative Rendering
Vue - Reactive Data Binding
Vue.js Component Tools | @vannsl
SFC - Template - Alternatives
Vue.js - Render function
Use render functions or JSX
Vue.js Component Tools | @vannsl
SFC - Script
imports
name
components
props
data
methods
render
…
Lifecycle Hooks:
created
mounted
updated
destroyed
Vue.js Component Tools | @vannsl
Component Lifecycle
The Vue Instance
Vue.js Component Tools | @vannsl
SFC - Style
Vue.js Component Tools | @vannsl
Project structure
styles.css
example1.html
example2.html
example3.html
example1.js
example2.js
example3.js
CTA.vue
Vue.js Component Tools | @vannsl
Small Reusable Components
Vue - Composing with Components
Single File Components
Vue.js Component Tools | @vannsl
CTA.vue - Template
Vue.js Component Tools | @vannsl
CTA.vue - Script
Vue.js Component Tools | @vannsl
CTA.vue - Style
Vue.js Component Tools | @vannsl
One week after Relaunch
CTA.vue
CTAGhost.vue
Vue.js Component Tools | @vannsl
DRY
🤔
Vue Composing Components | @vannsl
Vue.js Component Tools | @vannsl
Code
Reusability
Vue.js Component Tools | @vannsl
Vue Extend
😐
Vue.js Component Tools | @vannsl
Extends
Vue.js Component Tools | @vannsl
Vue.js Component Tools | @vannsl
Vue Mixins
😍
Vue.js Component Tools | @vannsl
cta-mixin.js
Vue.js Component Tools | @vannsl
CTA.vue with cta-mixin
Vue.js Component Tools | @vannsl
Mixins: Merging & Overlapping
CTA.vue, using cta-mixin.js
Vue.js Component Tools | @vannsl
Dynamic Content in Parent
Box with CTA.vue Component Box with CTAGhost.vue Component
Vue.js Component Tools | @vannsl
Box.vue BoxGhost.vue
DRY
🤔
Vue Composing Components | @vannsl
Vue.js Component Tools | @vannsl
Vue Slots
😍
Vue.js Component Tools | @vannsl
Composing Components
Vue.js Component Tools | @vannsl
Box.vue
Vue.js Component Tools | @vannsl
Slots (Parent)
Vue.js Component Tools | @vannsl
Slots
• Named Slots
Vue.js Component Tools | @vannsl
Slots
• Named Slots• Named Slots 

• Default Content
Vue.js Component Tools | @vannsl
Tools
Extend (nope)
Mixins (if appropriate)
Slots (yeah!)
Vue.js Component Tools | @vannsl
More Tools / Pattern
Filter
Plugins
Directives
*
Compound Components
Scoped Slots (Renderless Components)
Advanced Vue.js Component Tools | @vannsl
Thanks 🙏Thanks 🙏

Vue.js Component Tools