SlideShare a Scribd company logo
LEVEL-UP APPS & WEBSITES
WITH VUE.JS
Level-up
apps & websites
with vue.js
twitter:
@loregirardi
github:
@liqueflies
hey folks
i am
lorenzo girardi
twitter:
@loregirardi
github:
@liqueflies
hello commit
i am a
front-end dev
and a passionate
musician
twitter:
@loregirardi
github:
@liqueflies
digital company with strong focus on
strategy and technology
website:
https://www.develondigital.com/
international group
+15 years
+55 people
+5 departments
website:
https://www.develondigital.com/
thanks for having us!
is it easy
to build websites?
twitter:
@loregirardi
github:
@liqueflies
Level up  apps and websites with vue.js
Level up  apps and websites with vue.js
Our team was searching for a tool
with data driven development in mind...
...and a lean learning curve because
we had to be production-ready ASAP.
twitter:
@loregirardi
github:
@liqueflies
+ =
website:
https://vuejs.org/
/vjuː/
website:
https://vuejs.org/
Level up  apps and websites with vue.js
website:
https://vuejs.org/
progressive
framework
evan you
vue vue-router vuex vue-cli
website:
https://vuejs.org/
numbers
> 82k stars (87k react, 32k angular)
~ 4000 packages depends on it
> 1.000.000 download last month
$ 11.567 per month by 204 patreons
2 vueconf in 2018 (amsterdam, new orleans)
basic
concepts
website:
https://vuejs.org/
website:
https://vuejs.org/
website:
https://vuejs.org/
Level up  apps and websites with vue.js
<script src="vue.js"></script>
<div id="app">
<p>{{ message }}</p>
</div>
<script>
new Vue({
el: '#app',
data: {
message: 'Hello commit people!'
}
})
</script>
https://vuejs.org/ hello world
<script src="vue.js"></script>
<div id="app">
<p>{{ message }}</p>
</div>
<script>
new Vue({
el: '#app',
data: {
message: 'Hello commit people!'
}
})
</script>
https://vuejs.org/ hello world
<script src="vue.js"></script>
<div id="app">
<p>{{ message }}</p>
</div>
<script>
new Vue({
el: '#app',
data: {
message: 'Hello commit people!'
}
})
</script>
https://vuejs.org/ hello world
Level up  apps and websites with vue.js
<script src="vue.js"></script>
<div id="app">
<img v-bind:src="src" :alt="alt" />
</div>
<script>
new Vue({
el: '#app',
data: {
src: 'https://picsum.photos/200/300',
alt: 'A random pic from the web.'
}
})
</script>
https://vuejs.org/v2/guide/syntax.html attributes binding
<script src="vue.js"></script>
<div id="app">
<img v-bind:src="src" :alt="alt" />
</div>
<script>
new Vue({
el: '#app',
data: {
src: 'https://picsum.photos/200/300',
alt: 'A random pic from the web.'
}
})
</script>
https://vuejs.org/v2/guide/syntax.html attributes binding
<script src="vue.js"></script>
<div id="app">
<img v-bind:src="src" :alt="alt" />
</div>
<script>
new Vue({
el: '#app',
data: {
src: 'https://picsum.photos/200/300',
alt: 'A random pic from the web.'
}
})
</script>
https://vuejs.org/v2/guide/syntax.html attributes binding
Level up  apps and websites with vue.js
<script src="vue.js"></script>
<div id="app">
<p v-if="visible"> I’m not rendered </p>
<p v-show="visible"> I’m hidden [i.e. display: none] </p>
</div>
<script>
new Vue({
el: '#app',
data: {
visible: false
}
})
</script>
https://vuejs.org/v2/guide/syntax.html conditional render/display
<script src="vue.js"></script>
<div id="app">
<p v-if="visible"> I’m not rendered </p>
<p v-show="visible"> I’m hidden [i.e. display: none] </p>
</div>
<script>
new Vue({
el: '#app',
data: {
visible: false
}
})
</script>
https://vuejs.org/v2/guide/syntax.html conditional render/display
<script src="vue.js"></script>
<ul id="app">
<li v-for="todo in todos" :key="todo">
{{ todo }}
</li>
</ul>
<script>
new Vue({
el: '#app',
data: {
todos: ['eat', 'sleep', 'repeat']
}
})
</script>
https://vuejs.org/v2/guide/syntax.html loop through elements
<script src="vue.js"></script>
<ul id="app">
<li v-for="todo in todos" :key="todo">
{{ todo }}
</li>
</ul>
<script>
new Vue({
el: '#app',
data: {
todos: ['eat', 'sleep', 'repeat']
}
})
</script>
https://vuejs.org/v2/guide/syntax.html loop through elements
Level up  apps and websites with vue.js
<script src="vue.js"></script>
<div id="app">
<p> {{ message }} </p>
<button @click="message = ''"> Reset </button>
</div>
<script>
new Vue({
el: '#app',
data: {
message: 'Please, reset me!'
}
})
</script>
https://vuejs.org/v2/guide/syntax.html handle user input
<script src="vue.js"></script>
<div id="app">
<p> {{ message }} </p>
<button @click="message = ''"> Reset </button>
</div>
<script>
new Vue({
el: '#app',
data: {
message: 'Please, reset me!'
}
})
</script>
https://vuejs.org/v2/guide/syntax.html handle user input
<script src="vue.js"></script>
<div id="app">
<p> you typed: {{ message }} </p>
<input v-model="message" placeholder="start typing..." />
</div>
<script>
new Vue({
el: '#app',
data: {
message: ''
}
})
</script>
https://vuejs.org/v2/guide/syntax.html handle user input
<script src="vue.js"></script>
<div id="app">
<p> you typed: {{ message }} </p>
<input v-model="message" placeholder="start typing..." />
</div>
<script>
new Vue({
el: '#app',
data: {
message: ''
}
})
</script>
https://vuejs.org/v2/guide/syntax.html handle user input
Level up  apps and websites with vue.js
syntax
Focusing
- semantic code
- easy to read
- easy to maintain
- easy to share code
in teams.
setting data
Focusing
set data in vue.js is not async.
is the same as you do in javascript.
this.setState({ counter: this.state.counter++ })
this.setState({ counter: this.state.counter++ })
have you ever tried?
Level up  apps and websites with vue.js
computed
and methods
website:
https://vuejs.org/
<ul id="app">
<p> The higher number is: {{ higherNumber }} </p>
</ul>
new Vue({
el: '#app',
data: {
numbers: [100, 2, 345, 42, 56]
},
computed: {
higherNumber: function () {
return Math.max(...this.numbers)
}
}
})
https://vuejs.org/v2/guide/syntax.html computed
<ul id="app">
<p> The higher number is: {{ higherNumber }} </p>
</ul>
new Vue({
el: '#app',
data: {
numbers: [100, 2, 345, 42, 56]
},
computed: {
higherNumber: function () {
return Math.max(...this.numbers)
}
}
})
https://vuejs.org/v2/guide/syntax.html computed
<ul id="app">
<p> The higher number is: {{ higherNumber }} </p>
</ul>
new Vue({
el: '#app',
data: {
numbers: [100, 2, 345, 42, 56]
},
computed: {
higherNumber: function () {
return Math.max(...this.numbers)
}
}
})
https://vuejs.org/v2/guide/syntax.html computed
<div id="app">
<p v-show="visible"> I am visible. </p>
<button @click="toggleVisibility"> toggle visibility </button>
</div>
new Vue({
el: '#app',
data: {
visible: false
},
methods: {
toggleVisibility: function (event) {
this.visible = !this.visible
}
}
})
https://vuejs.org/v2/guide/syntax.html methods
<div id="app">
<p v-show="visible"> I am visible. </p>
<button @click="toggleVisibility"> toggle visibility </button>
</div>
new Vue({
el: '#app',
data: {
visible: false
},
methods: {
toggleVisibility: function (event) {
this.visible = !this.visible
}
}
})
https://vuejs.org/v2/guide/syntax.html methods
computed
Focusing
- runs when its
own dependencies
updates
- called and used
as data properties
- is cached
methods
Focusing
- runs when
you need to use it
- called as a
function in event
bindings
- is not cached
summary
Focusing
- no this hell (context is auto-binded)
- no async data beginner failures
- no shouldUpdate worries
- no build steps needed
Level up  apps and websites with vue.js
content
management with
components
website:
https://vuejs.org/v2/components.html
Level up  apps and websites with vue.js
<the-header />
<aside>
<main-menu />
</aside>
<main>
<blog-posts />
</main>
<the-footer />
https://vuejs.org/v2/components.htm
l
components
tree structure
component
Focusing
- encapsulation of elements
that can be accessed
through one single element.
- encapsulation of logic,
but in different instances
- encapsulation of style (module, scoped)
// ...in root component
<div id="app">
<card-item />
</div>
Vue.component('card-item', {
template: '...',
data: function () {
return {
...
}
}
})
https://vuejs.org/v2/components.html
// ...in root component
<div id="app">
<card-item />
</div>
<script>
Vue.component('card-item', {
template: '...',
data: function () {
return { ... }
}
})
</script>
https://vuejs.org/v2/components.html
<script type="text/x-template" id="card-template">
<article>
<h2> {{ title }} </h2>
<img :src="img" :alt="title" />
</article>
</script>
Vue.component('card-item', {
template: '#card-template',
data: function () {
return {
title: 'A card title'
img: 'https://picsum.photos/200/300'
}
}
})
https://vuejs.org/v2/components.html
<script type="text/x-template" id="card-template">
<article>
<h2> {{ title }} </h2>
<img :src="img" :alt="title" />
</article>
</script>
Vue.component('card-item', {
template: '#card-template',
data: function () {
return {
title: 'A card title'
img: 'https://picsum.photos/200/300'
}
}
})
https://vuejs.org/v2/components.html
Level up  apps and websites with vue.js
{
...
data () {
return {
title: 'A card title'
img: 'https://picsum.photos/200/300'
}
}
...
}
https://vuejs.org/v2/components.html
data is a function
Level up  apps and websites with vue.js
now we can encapsulate logic
and style in a component.
by for now, we are using it
statically.
twitter:
@loregirardi
github:
@liqueflies
Vue.component('card-item', {
template: '#card-template',
props: ['title', 'img']
})
// ...in root component
<div id="app">
<card-item
title="Title from parent"
src="https://picsum.photos/200/300" />
</div>
https://vuejs.org/v2/components.html
… better use props
Vue.component('card-item', {
template: '#card-template',
props: ['title', 'img']
})
// ...in root component
<div id="app">
<card-item
title="Title from parent"
src="https://picsum.photos/200/300" />
</div>
https://vuejs.org/v2/components.html
… better use props
<div id="app">
<card-item
propA="..."
propB="..."
propC="..."
propD="..."
...
/>
</div>
https://vuejs.org/v2/components.html
this could be sick
Vue.component('card-item', {
inheritAttrs: false, // important to avoid unwanted markup
template: '#card-template',
props: ['title', 'img']
})
<div id="app">
<card-item v-bind="card" />
</div>
new Vue({
el: '#app',
data: {
card: { title: 'Card title', img: 'https://picsum.photos/200/300' }
}
})
https://vuejs.org/v2/components.html
v-bind to the rescue
Vue.component('card-item', {
inheritAttrs: false, // important to avoid unwanted markup
template: '#card-template',
props: ['title', 'img']
})
<div id="app">
<card-item v-bind="card" />
</div>
new Vue({
el: '#app',
data: {
card: { title: 'Card title', img: 'https://picsum.photos/200/300' }
}
})
https://vuejs.org/v2/components.html
v-bind to the rescue
lifecycle
Focusing
each vue instance goes through
a series of initialization steps
when it’s created running functions
called lifecycle hooks,
giving users the opportunity to
add their own code at specific stages.
Vue.component('card-item', {
template: '...',
data: function () {
return {
image: '...'
}
},
mounted: function () {
var image = this.image
this.image = '...my-spinner-image.png'
new imagesLoaded(this.$el, { this.image = image })
}
})
https://vuejs.org/v2/components.html
Vue.component('card-item', {
template: '...',
data: function () {
return {
image: '...'
}
},
mounted: function () {
var image = this.image
this.image = '...my-spinner-image.png'
new imagesLoaded(this.$el, { this.image = image })
}
})
https://vuejs.org/v2/components.html
Vue.component('card-item', {
template: '...',
data: function () {
return {
image: '...'
}
},
mounted: function () {
var image = this.image
this.image = '...my-spinner-image.png'
new imagesLoaded(this.$el, { this.image = image })
}
})
https://vuejs.org/v2/components.html
<div id="app">
<component :is="componentName" />
</div>
new Vue({
el: '#app',
data: {
componentName: '...'
}
})
https://vuejs.org/v2/components.html
the :is attribute
<template lang="pug">
// ...
</template>
<script>
// export default {}
</script>
<style lang="sass|scss|stylus" module|scoped>
// ...
</style>
https://vuejs.org/v2/components.html
single file
components
Level up  apps and websites with vue.js
update
data with events
website:
https://vuejs.org/v2/style-guide/
by passing props we can mutate
child data from parent.
how can we mutate
parent data from its children?
twitter:
@loregirardi
github:
@liqueflies
<script type="text/x-template" id="slider-pag-template">
<div>
<button @click="$emit('next-slide')"> Next slide </button>
<button @click="$emit('prev-slide')"> Prev slide </button>
</div>
</script>
Vue.component('slider-pag', {
template: '#slider-pag-template'
})
<div id="app">
<slider-pag
@next-slide="slide++" @prev-slide="slide--" />
</div>
https://vuejs.org/v2/guide/components.html#Using-v-on-with-Custom-Events
<script type="text/x-template" id="slider-pag-template">
<div>
<button @click="$emit('next-slide')"> Next slide </button>
<button @click="$emit('prev-slide')"> Prev slide </button>
</div>
</script>
Vue.component('slider-pag', {
template: '#slider-pag-template'
})
<div id="app">
<slider-pag
@next-slide="slide++" @prev-slide="slide--" />
</div>
https://vuejs.org/v2/guide/components.html#Using-v-on-with-Custom-Events
and what if we want
to change data...
...wherever in the
component tree?
twitter:
@loregirardi
github:
@liqueflies
// broadcast event
var bus = new Vue()
// send event
bus.$emit('event-name', ...arguments)
// receive event
bus.$on('event-name', ...arguments)
// unbind event
bus.$off('event-name')
event bus
https://vuejs.org/v2/components.html#Content-Distribution-with-Slots
// send event
new Vue({
...
methods: {
myMethod: function () {
bus.$emit('event-name', ...arguments)
}
}
})
event bus
https://vuejs.org/v2/components.html#Content-Distribution-with-Slots
// receive event
new Vue({
...
created: function () {
bus.$on('event-name', myMethod)
},
methods: {
myMethod: function () { ... }
}
})
event bus
https://vuejs.org/v2/components.html#Content-Distribution-with-Slots
Level up  apps and websites with vue.js
native
transitions
website:
https://vuejs.org/v2/guide/transitions.html
transitions
Focusing
transition component allows
to add enter/leave effects to:
- conditions (v-if / v-show)
- dynamic components
- component root node
- switching :key attribute
website:
https://vuejs.org/v2/guide/transitions.html
website:
https://vuejs.org/v2/guide/transitions.html
<div id="app">
<transition name="fade">
<p v-show="visible"> I am visible. </p>
</transition>
<button @click="visible = !visible"> toggle </button>
</div>
<style>
.fade-enter-active, .fade-leave-active {
transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
</style>
https://vuejs.org/v2/guide/syntax.html
<div id="app">
<transition name="fade">
<p v-show="visible"> I am visible. </p>
</transition>
<button @click="visible = !visible"> toggle </button>
</div>
<style>
.fade-enter-active, .fade-leave-active {
transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
</style>
https://vuejs.org/v2/guide/syntax.html
Level up  apps and websites with vue.js
<div id="app">
<transition name="fade">
<p v-show="visible"> I am visible. </p>
</transition>
<button @click="visible = !visible"> toggle </button>
</div>
<style>
.fade-enter-active {
transition: opacity .2s ease;
}
.fade-leave-active {
transition: opacity .3;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
</style>
https://vuejs.org/v2/guide/syntax.html
<div id="app">
<transition name="fade">
<p v-show="visible"> I am visible. </p>
</transition>
<button @click="visible = !visible"> toggle </button>
</div>
<style>
.fade-enter-active {
transition: opacity .2s ease;
}
.fade-leave-active {
transition: opacity .3;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
</style>
https://vuejs.org/v2/guide/syntax.html
Level up  apps and websites with vue.js
<div id="app">
<transition name="fade" mode="out-in|in-out">
<component :is="pageName" />
</transition>
</div>
<script>
new Vue({
el: '#app',
props: ['pageName']
})
</script>
https://vuejs.org/v2/guide/syntax.html
<div id="app">
<transition name="fade" mode="out-in|in-out">
<component :is="pageName" />
</transition>
</div>
<script>
new Vue({
el: '#app',
props: ['pageName']
})
</script>
https://vuejs.org/v2/guide/syntax.html
https://jsfiddle.net/loregirardi/52mn0sqL/
a fiddle
<div id="app">
<transition @enter="enterAnimation">
<component :is="pageName" />
</transition>
</div>
<script>
new Vue({
el: '#app',
props: ['pageName'],
methods: {
enterAnimation (el, done) { /* your code */ }
}
})
</script>
https://vuejs.org/v2/guide/syntax.html
<div id="app">
<transition @enter="enterAnimation">
<component :is="pageName" />
</transition>
</div>
<script>
new Vue({
el: '#app',
props: ['pageName'],
methods: {
enterAnimation (el, done) { /* your code */ }
}
})
</script>
https://vuejs.org/v2/guide/syntax.html
Level up  apps and websites with vue.js
async call
best practices
website:
https://vuejs.org/
in real use cases
we have to display
data from server.
what’s the better way
to achieve that?
twitter:
@loregirardi
github:
@liqueflies
Level up  apps and websites with vue.js
<script src="vue.js"></script>
<ul id="star-wars">
<li v-for="person in people" :key="person.name">
{{ person.name }}
</li>
</ul>
<script>
new Vue({
el: '#star-wars',
data: {
people: []
},
created: function () {
fetch('https://swapi.co/api/people').then(function (response) {
this.people = response.results
})
}
})
</script>
<script src="vue.js"></script>
<ul id="star-wars">
<li v-for="person in people" :key="person.name">
{{ person.name }}
</li>
</ul>
<script>
new Vue({
el: '#star-wars',
data: {
people: []
},
created: function () {
fetch('https://swapi.co/api/people').then(function (response) {
this.people = response.results
})
}
})
</script>
in fast connections
we will immediately see
results.
how can we add a loader
for slow connections?
twitter:
@loregirardi
github:
@liqueflies
https://jsfiddle.net/loregirardi/5x6392wr/
a fiddle
five
reasons why
website:
https://vuejs.org/
no build steps
required
Easy to start up, also in old legacy
projects.
website:
https://vuejs.org/
effortless
api
update and modify data is easy.
context is auto-binded and rendering
updates are out of the box.
website:
https://vuejs.org/
add modularly
what you need
if your app / website needs to scale
just add modules from vue.js ecosystem
to fit your needs.
website:
https://vuejs.org/
no es6 knowledge
needed
i am not telling you to not learn es6.
but if you want you can still use
old es2015 syntax so
beginner / not-frontend dev
can easily get into it.
website:
https://vuejs.org/
super fast on
mobile devices
is easy achieve fast rendering on desktop,
vue.js get the best experience on mobile
devices.
website:
https://vuejs.org/
Level up  apps and websites with vue.js
useful resources
- curated list: https://github.com/vuejs/awesome-vue
- official forum: https://forum.vuejs.org/
- vuex: https://github.com/vuejs/vuex
- vue-router: https://router.vuejs.org/en/
- vue-cli: https://github.com/vuejs/vue-cli
- server-side rendering: https://vuejs.org/v2/guide/ssr.html
website:
https://vuejs.org/
vue people
- evan you: https://twitter.com/youyuxi
- kazupon: https://twitter.com/kazu_pon
- linusborg: https://twitter.com/Linus_Borg
- akryum: https://twitter.com/Akryum
- katashin: https://twitter.com/ktsn
- sarah drasner: https://twitter.com/sarah_edo
website:
https://vuejs.org/team.html
vue community is
growing quickly but is recent.
let’s share knowledge,
code and passion.
twitter:
@loregirardi
github:
@liqueflies
thank you

More Related Content

PDF
What Web Developers Need to Know to Develop Windows 8 Apps
Doris Chen
 
PDF
Meet VueJs
Mathieu Breton
 
PDF
Modern frontend development with VueJs
Tudor Barbu
 
PDF
Enjoy the vue.js
TechExeter
 
PDF
The Point of Vue - Intro to Vue.js
Holly Schinsky
 
PPTX
An introduction to Vue.js
Pagepro
 
PDF
Desbravando Web Components
Mateus Ortiz
 
PPTX
React django
Heber Silva
 
What Web Developers Need to Know to Develop Windows 8 Apps
Doris Chen
 
Meet VueJs
Mathieu Breton
 
Modern frontend development with VueJs
Tudor Barbu
 
Enjoy the vue.js
TechExeter
 
The Point of Vue - Intro to Vue.js
Holly Schinsky
 
An introduction to Vue.js
Pagepro
 
Desbravando Web Components
Mateus Ortiz
 
React django
Heber Silva
 

What's hot (20)

PDF
Javascript MVVM with Vue.JS
Eueung Mulyana
 
PDF
Chrome enchanted 2015
Chang W. Doh
 
PDF
Vue.js for beginners
Julio Bitencourt
 
PDF
VueJS Introduction
David Ličen
 
PDF
Room with a Vue - Introduction to Vue.js
Zachary Klein
 
PDF
An introduction to Vue.js
Javier Lafora Rey
 
PPTX
Vue business first
Vitalii Ratyshnyi
 
PPTX
How to Build SPA with Vue Router 2.0
Takuya Tejima
 
PDF
Love at first Vue
Dalibor Gogic
 
PPT
Vue.js Getting Started
Murat Doğan
 
PPTX
Meteor Day Talk
Brandon Bechtel
 
PDF
Drupal point of vue
David Ličen
 
PPTX
Google app engine by example
Alexander Zamkovyi
 
PDF
Vuejs for Angular developers
Mikhail Kuznetcov
 
PDF
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
Luciano Mammino
 
PDF
Desenvolvimento web com Ruby on Rails (parte 6)
Joao Lucas Santana
 
PPTX
Open social 2.0 sandbox ee and breaking out of the gadget box
Ryan Baxter
 
PDF
jQuery Internals + Cool Stuff
jeresig
 
PPTX
Introduction to modern front-end with Vue.js
monterail
 
PDF
The Art of AngularJS in 2015
Matt Raible
 
Javascript MVVM with Vue.JS
Eueung Mulyana
 
Chrome enchanted 2015
Chang W. Doh
 
Vue.js for beginners
Julio Bitencourt
 
VueJS Introduction
David Ličen
 
Room with a Vue - Introduction to Vue.js
Zachary Klein
 
An introduction to Vue.js
Javier Lafora Rey
 
Vue business first
Vitalii Ratyshnyi
 
How to Build SPA with Vue Router 2.0
Takuya Tejima
 
Love at first Vue
Dalibor Gogic
 
Vue.js Getting Started
Murat Doğan
 
Meteor Day Talk
Brandon Bechtel
 
Drupal point of vue
David Ličen
 
Google app engine by example
Alexander Zamkovyi
 
Vuejs for Angular developers
Mikhail Kuznetcov
 
Universal JS Web Applications with React - Luciano Mammino - Codemotion Rome ...
Luciano Mammino
 
Desenvolvimento web com Ruby on Rails (parte 6)
Joao Lucas Santana
 
Open social 2.0 sandbox ee and breaking out of the gadget box
Ryan Baxter
 
jQuery Internals + Cool Stuff
jeresig
 
Introduction to modern front-end with Vue.js
monterail
 
The Art of AngularJS in 2015
Matt Raible
 
Ad

Similar to Level up apps and websites with vue.js (20)

PPTX
An introduction to Vue.js
TO THE NEW Pvt. Ltd.
 
PDF
ITB2019 ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 V...
Ortus Solutions, Corp
 
PPTX
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
Gavin Pickin
 
PDF
Vue js 2.x
Suresh Velusamy
 
PDF
Introduction to Vue.js
Meir Rotstein
 
PDF
Vue.js - An Introduction
saadulde
 
PDF
Vue.js
Jadson Santos
 
PPTX
Introduction to web application development with Vue (for absolute beginners)...
Lucas Jellema
 
PDF
Intro to VueJS Workshop
Rafael Casuso Romate
 
ODP
Web Development with VueJS : The Complete Guide
Sam Dias
 
PDF
Learning Vue Directives.pdf
murad khan
 
PDF
VueJS: The Simple Revolution
Rafael Casuso Romate
 
PDF
Quasar Framework Introduction for C++ develpoers
sadadkhah
 
PPTX
Don't Over-React - just use Vue!
Raymond Camden
 
PPTX
Basics of Vue.js 2019
Paul Bele
 
PDF
Is it time to migrate to Vue 3?
Denny Biasiolli
 
PDF
Vue fundamentasl with Testing and Vuex
Christoffer Noring
 
PPTX
A New Vue for Web Development
Chad Campbell
 
ODP
Basics of VueJS
Squash Apps Pvt Ltd
 
PDF
Vue.js part1
욱래 김
 
An introduction to Vue.js
TO THE NEW Pvt. Ltd.
 
ITB2019 ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 V...
Ortus Solutions, Corp
 
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
Gavin Pickin
 
Vue js 2.x
Suresh Velusamy
 
Introduction to Vue.js
Meir Rotstein
 
Vue.js - An Introduction
saadulde
 
Introduction to web application development with Vue (for absolute beginners)...
Lucas Jellema
 
Intro to VueJS Workshop
Rafael Casuso Romate
 
Web Development with VueJS : The Complete Guide
Sam Dias
 
Learning Vue Directives.pdf
murad khan
 
VueJS: The Simple Revolution
Rafael Casuso Romate
 
Quasar Framework Introduction for C++ develpoers
sadadkhah
 
Don't Over-React - just use Vue!
Raymond Camden
 
Basics of Vue.js 2019
Paul Bele
 
Is it time to migrate to Vue 3?
Denny Biasiolli
 
Vue fundamentasl with Testing and Vuex
Christoffer Noring
 
A New Vue for Web Development
Chad Campbell
 
Basics of VueJS
Squash Apps Pvt Ltd
 
Vue.js part1
욱래 김
 
Ad

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
Doc9.....................................
SofiaCollazos
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
agentic-ai-and-the-future-of-autonomous-systems.pdf
siddharthnetsavvies
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
PPTX
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
PDF
Software Development Company | KodekX
KodekX
 
PDF
Test Bank, Solutions for Java How to Program, An Objects-Natural Approach, 12...
famaw19526
 
PDF
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
PDF
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
PPTX
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
PDF
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
PDF
CIFDAQ's Teaching Thursday: Moving Averages Made Simple
CIFDAQ
 
PDF
REPORT: Heating appliances market in Poland 2024
SPIUG
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
Google’s NotebookLM Unveils Video Overviews
SOFTTECHHUB
 
PDF
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
Doc9.....................................
SofiaCollazos
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
agentic-ai-and-the-future-of-autonomous-systems.pdf
siddharthnetsavvies
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Using Anchore and DefectDojo to Stand Up Your DevSecOps Function
Anchore
 
Comunidade Salesforce São Paulo - Desmistificando o Omnistudio (Vlocity)
Francisco Vieira Júnior
 
Software Development Company | KodekX
KodekX
 
Test Bank, Solutions for Java How to Program, An Objects-Natural Approach, 12...
famaw19526
 
The Evolution of KM Roles (Presented at Knowledge Summit Dublin 2025)
Enterprise Knowledge
 
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
Security features in Dell, HP, and Lenovo PC systems: A research-based compar...
Principled Technologies
 
CIFDAQ's Teaching Thursday: Moving Averages Made Simple
CIFDAQ
 
REPORT: Heating appliances market in Poland 2024
SPIUG
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Google’s NotebookLM Unveils Video Overviews
SOFTTECHHUB
 
BLW VOCATIONAL TRAINING SUMMER INTERNSHIP REPORT
codernjn73
 

Level up apps and websites with vue.js

Editor's Notes

  • #3: BENVENUTI AL NUOVO INCONTRO DEL COMMIT UNIVERSITY ->
  • #4: 24 anni da verona ->
  • #5: ed è un piacere essere qui ->
  • #9: sondaggio quando vecchi amici chiedono che lavoro fai...
  • #12: ci siamo resi conto che il problema era gestire lo stato della nostra applicazione ->
  • #17: i numeri sono raddoppiati dallo scorso anno ->
  • #19: dobbiamo pensare che la vista sia la rappresentaziobne visiva del nostro stato, il nostro compito è quello di eseguire i cambiamenti su di esso
  • #20: le proprietà di data hanno un setter ed un getter ciascuna, vengono collezionati in watcher che vengono notificati dai setter per triggerare nuovamente il render del layout
  • #22: Espressione javascript tra mustache syntax
  • #26: Espressione javascript tra attributi html
  • #30: differenze v-if per nascondere ciò che non vogliamo vedere v-show per nascondere momentaneamente qualcosa che poi sarà visibile costo di esecuzione maggiore per v-if
  • #32: prendere ogni cella dell’array todos ed averla a disposizione dal nodo su cui viene applicato il v-if e anche al suo interno
  • #35: eventi direttamente nell’html
  • #37: v-model viene applicato in qualsiasi tipo di input, al suo evento change la modifica viene propagata alla proprietà di data sul quale abbiamo applicato l’attributo
  • #40: vantaggio sequenziale, una dipende dall’altra
  • #44: computed è una proprietà dell’oggetto vue deve ritornare una variabile / dato viene chiamata come una prop di data è cachata se non vengono aggiornate dipendenze
  • #47: è una chiave dell’oggetto vue è una funzione che non deve ritornare per forza un valore, solitamente muta delle proprietà non è cachata
  • #53: spesso la definizione di component e la sua utilità non vengono concretamente comprese
  • #55: chiaramente header e footer non saranno riutilizzabili ma il singolo post del blog probabilmente si
  • #56: un insieme di tag html accessibili da un unico nodo ognuno con riferimento al proprio stile e la propria logica