SlideShare uma empresa Scribd logo
1 de 163
Baixar para ler offline
VUE AND VUEXVUE AND VUEX
CHRIS NORINGCHRIS NORING
Google Developer Expert
@chris_noring
McKinsey
1
WHY SHOULD YOUWHY SHOULD YOU
CARE?CARE?
Vue.js 93000 stars on github, React 95000 stars on
github, Angular 36000 stars on github AngularJS
58000 stars on github
It's really easy, great documentation
The interest is there, now we are just waiting for
adoption
2 . 1
VUE BASICSVUE BASICS
3 . 1
Let's start with the DOM
3 . 2
<html>
<body>
<div id="app">
{{ message }} {{ other message }}
</div>
<!-- development version, includes helpful console warning
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"
<script src="app.js"></script>
</body>
</html>
3 . 3
Now let's create our Vue app !
3 . 4
el - HTML element where the app is rendered
data - where the data is
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!',
otherMessage: 'other message'
}
})
3 . 5
HELLO VUEHELLO VUE
3 . 6
What happened here?
We instantiated an App component to create our
Vue app new Vue({ ... definition })
We used interpolation {{}} - to show data
3 . 7
HOW DO WE RENDER A LIST?HOW DO WE RENDER A LIST?
3 . 8
Use the structural directive v-for
Add a list to our data property
3 . 9
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!',
items: [{ id: 1, title: 'an item' }, { id: 2, title: 'a ne
}
})
3 . 10
v-for renders list
<div v-for="item in items">
{{item.title}}
</div>
3 . 11
How do we do Conditional rendering?
3 . 12
Should I v-if it or v-else it?
v-if render if true
v-else render if false
3 . 13
<div v-if="hasError">
{{ error }}
</div>
<div v-else>
All good here
</div>
3 . 14
WORKING WITH FORMWORKING WITH FORM
CONTROLSCONTROLS
3 . 15
Input element
3 . 16
v-model two-way binding
data: {
newItem: ''
}
<input v-model="newItem" />
3 . 17
Checkbox element
<input type="checkbox" id="checkbox" v-model="checked">
3 . 18
You can bind a list of checkboxes to an array
3 . 19
['Donatello', 'Michelangelo', 'Rafael']
<div id='example-3'>
<input type="checkbox" id="Donatello" value="Donatello"
v-model="checkedTurtles">
<label for="Donatello">Donatello</label>
<input type="checkbox" id="Michelangelo" value="Michelangelo
v-model="checkedTurtles">
<label for="Michelangelo">Michelangelo</label>
<input type="checkbox" id="Rafael" value="Rafael"
v-model="checkedTurtles">
<label for="Rafael">Rafael</label>
<br>
<span>Checked turtles: {{ checkedTurtles }}</span>
</div>
3 . 20
You can bind a list of radio buttons to the same v-
model
3 . 21
side = Shredder or Splinter
<input type="radio" id="Shredder" value="Shredder"
v-model="side">
<label for="Shredder">Bad guys</label>
<br>
<input type="radio" id="Splinter" value="Splinter"
v-model="side">
<label for="Splinter">Good guys</label>
3 . 22
we can easily capture the selected value in a Select
with v-model
3 . 23
<select v-model="selectedTeam">
<option v-for="option in teams" v-bind:value="option.value">
{{ option.text }}
</option>
</select>
3 . 24
What about methods ?
3 . 25
v-on:event long name
@event short hand
this.newItem no need for this.data.newItem
data: {
newItem: ''
},
methods: {
save() {
console.log('value of input ' + this.newItem);
}
}
<button v-on:click="save">Save</button>
3 . 26
So we learned the Vue basics on creating an app,
structural directives and so on.
Am I a Vue ninja now?
3 . 27
Patience my young turtle, we need to learn about
components first
3 . 28
COMPONENTSCOMPONENTS
4 . 1
Vue.component()
Vue.component('componentName', {
... object definition
})
4 . 2
COMPONENT EXAMPLECOMPONENT EXAMPLE
4 . 3
template, methods ...
Vue.component('product', {
template: `
<div>
<input v-model="product" />
<button v-on:click="save">Save</button>
</div>
`,
data() { return { product: void 0 } },
methods: {
async save() {
await api.createProduct(this.product);
this.product = '';
}
}
})
4 . 4
COMPONENT WITH A CHILDCOMPONENT WITH A CHILD
COMPONENTCOMPONENT
4 . 5
Vue.component('parent', {
template: `
<div>
Parent: <child />
</div>
`
})
Vue.component('child', {
template: `
<div>
<strong>Child</strong>
</div>
`
})
4 . 6
CREATING COMPONENTS WITHCREATING COMPONENTS WITH
ES6 MODULE/ VUE-CLIES6 MODULE/ VUE-CLI
APPROACHAPPROACH
4 . 7
1 file = 1 component
4 . 8
Component consists of the following:
template - tag , this is where your HTML markup
lives
script -tag, this is where the component JS lives
style - tag , this is where the styles are defined
4 . 9
<template>
<div class="hello"><h1>{{ msg }}</h1></div>
</template>
<script>
export default {
name: 'HelloWorld',
data () { return { msg: 'Welcome to Vue' } }
}
</script>
<style scoped>
.hello {
padding: 10px;
}
</style>
4 . 10
No CSS leakage with scoped styles
WINNING
4 . 11
What about child components?
4 . 12
To be able to use child component we need to:
import the child component
register it with its parent component
4 . 13
import - import module
components - place child component here
import Test from './Test.vue'
export default {
name: 'HelloWorld',
data () {
return {
msg: 'Welcome to Vue'
}
},
components: {
Test
}
}
4 . 14
Then we are free to use it in our template, like so
4 . 15
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<test></test>
</div>
</template>
4 . 16
COMPONENT INPUT/OUTPUTCOMPONENT INPUT/OUTPUT
4 . 17
props: ['input1', 'input2']
v-bind:propName or :propName
v-bind - bind input
props - declare input name
Vue.component('product', {
template : `
<div>
Product name {{ item.name }}
</div>
`,
props: ['item']
})
// usage
<product v-bind:item="product"></product>
4 . 18
COMPONENT INPUT VALIDATIONCOMPONENT INPUT VALIDATION
Gives off warning in the console if validation fails
4 . 19
Specify type
4 . 20
props propName: dataType
props: {
year: Number,
title: String
...
}
4 . 21
Type and required
4 . 22
object type, required
props : {
title : {
type: String,
required: true
}
}
4 . 23
Specify a default object, if input is missing
4 . 24
default if prop is missing, this is what gets assigned
props : {
product : {
type: Object,
default: function() {
return {
name: 'Unknown product'
};
}
}
}
4 . 25
pro tip - use :product instead of v-bind:product
// product set, will use supplied value
<product-detail :product="product"></product-detail>>
// product NOT set, will use default value
<product-detail></product-detail>
4 . 26
Validator function
4 . 27
validator must return true/false
props : {
age : {
type: Number,
validator: function(value){
return value >=18;
}
}
}
4 . 28
data: {
age: 11
}
// validation kicks in, reports error
<product-detail :age="age"></product-detail>
data: {
age: 19
}
// everything is good
<product-detail></product-detail>
4 . 29
OUTPUTOUTPUT
4 . 30
let's start with the parent
4 . 31
template: `
<product-detail :product="product" @save="handleSave" />
`,
data() {
return {
product: { name: 'something' }
}
},
methods: {
handleSave(payload) {
console.log('called from child', payload)
}
}
4 . 32
now for the child component
4 . 33
$emit('eventName', payload)
Vue.component('product-detail', {
template : `
<div>
Product name {{ item }}
<button v-on:click="$emit('save', someData)">Save</button>
</div>
`,
props: ['item'],
data() {
return {
someData: Object.assign({}, this.item);
}
}
})
4 . 34
SCENARIOSCENARIO
We want to change a product locally and save it when
we are done editing
4 . 35
We call select() when we select an item in a list
Vue.component('parent', {
template: `
<div v-for="product in products">
{{ product.title }}
<button v-on:click="select(product)">Select</button>
</div>
<product-detail v-on:save="save" :product="selectedProduct
`,
methods : {
select(product) { this.selectedProduct = product; },
save(p) { this.product = p; }
},
data: { selectedProduct: void 0, products: [...] }
})
4 . 36
We copy our input to a local object p
Vue.component('product-detail', {
template: `
<div>
<input v-model="p.title" />
<button v-on:click="$emit('save',p)">Save changes</butto
</div>
`,
data() {
return {
p: { ...this.product };
}
},
props: ['product']
})
4 . 37
It doesn't update when I do a new selection :(
4 . 38
Let's look at the parent template again
The input :product doesn't seem to listen to changes
template: `
<div v-for="product in products">
{{ product.title }}
<button v-on:click="select(product)"></button>
</div>
<product-detail v-on:save="save" :product="selectedProduct"
`
4 . 39
Solution: use a watch property to fix that
4 . 40
Our p property is reset on change
Vue.component('product-detail', {
...
watch: {
p(newVal, oldVal) {
this.p = { ...this.product };
}
}
props: ['product']
})
4 . 41
Everything works now, yeah :)
4 . 42
Alright I'm ready. Let's do this
4 . 43
Wait, your app is going to need more than one page,
it's time to learn about routing
4 . 44
ROUTINGROUTING
We need multiple pages in our app right?
5 . 1
SET UP THE ROUTESSET UP THE ROUTES
5 . 2
Define a routes array
5 . 3
path - is the url
component - is the component that should respond
const routes = [
{ path: '/products', component: Products },
{ path: '/treasure', component: Treasure }
]
5 . 4
const router = new VueRouter({
routes // short for `routes: routes`
})
5 . 5
DEFINE A VIEWPORTDEFINE A VIEWPORT
Use router-outlet element
5 . 6
<div id="app">
<div>Menu</div>
<router-outlet /> <!-- render route content here -->
<div>Footer</div>
</div>
5 . 7
How to navigate?
Answer: Define a link
5 . 8
<router-link to="/products">Products</router-link>
5 . 9
What about routing with params in them, aka wildcard
routing ?
5 . 10
const routes = [
{ path: '/products', component: Products },
{ path: '/products/:id', component: ProductDetail }
]
5 . 11
Ok so we can now match /products/11 or
/products/114
How do we dig out the parameter?
5 . 12
this.$route.params.id gives us the parameter
const ProductDetail = {
template: `
<div>
Product {{ product.name }}
</div>
`,
data() {
let product = products.find(p => this.$route.params.id);
return {
product
};
}
}
5 . 13
What about query params?
/products?pageSize=10&page=2
$route.query.queryParam
5 . 14
this.$route.query.queryParam gives us the parameter
const ProductDetail = {
template: `
<div>
Product {{ product.name }}
</div>
`,
async data() {
let product = await getProducts($route.query.page, $route.
return {
product
};
}
}
5 . 15
Let's face it, our user will mistype the url at some
point, we need a 'Catch all route'
5 . 16
const routes = [
{ path: '/products', component: Products, name: 'products' }
{ path: '/products/:id', name: 'product', component: Product
{ path: '/**', component: NotFound }
]
5 . 17
Programmatic routing, we can navigate by url as well
as name
5 . 18
methods: {
back() {
this.$router.push('/products?a=1&b=2');
},
backName() {
this.$router.push({ name: 'products' });
}
}
5 . 19
You can have Multiple view ports
5 . 20
<div>
<router-view class="header" name="header"></router-view>
</div>
<div>
<router-view class="body"></router-view>
</div>
<div>
<router-view class="footer" name="footer"></router-view>
</div>
5 . 21
Give router-view a name and we can route to it
5 . 22
default - refers to an unnamed router-view
footer - is our named router-view
const routes = [
{ path: '/products',
components: {
default: Products,
footer: Footer
},
},
]
5 . 23
Don't tell me, there is more right?
5 . 24
Well yes, we need to learn how test our app...
5 . 25
TESTINGTESTING
6 . 1
The easiest way to get started with testing is using vue-
cli
6 . 2
Type of testing you can do
Unit testing, Karma, Mocha, Chai or Jest
E2E testing, Nightwatch
6 . 3
HOW DO WE CONSTRUCT A UNIT TEST?HOW DO WE CONSTRUCT A UNIT TEST?
Get a constructor reference
Instantiate constructor
Call mount
Find the element in question
Assert
6 . 4
import Vue from 'vue'
import Test from '@/components/Test'
describe('Test.vue', () => {
it('should render correct contents', () => {
const Constructor = Vue.extend(Test)
const vm = new Constructor().$mount()
expect(vm.$el.querySelector('.test h1').textContent)
.to.equal('Testing...')
})
})
6 . 5
Scenario: we have a component with input props
6 . 6
<template>
<div class="about">
<h1>{{msg}}</h1>
<h2>{{title}}</h2>
</div>
</template>
<script>
export default {
name: 'About',
data () {
return { msg: 'about page of the app' }
},
props: ['title']
}
</script>
6 . 7
And now to the test
6 . 8
propsData needs to be set
describe('About.vue', () => {
it('should render correct contents', () => {
const Constructor = Vue.extend(About)
const vm = new Constructor({
propsData: { title: 'abc' }
}).$mount()
expect(vm.$el.querySelector('.about h2').textContent)
.to.equal('abc')
})
})
6 . 9
How do we deal with events?
6 . 10
<template>
<div class="test">
<h1>{{msg}}</h1>
<button class="change-button" @click="change">Change</butt
</div>
</template>
<script>
export default {
name: 'Test',
data () { return { msg: 'Testing...' } },
methods: { change () { this.msg = 'clicked' } }
}
</script>
6 . 11
Now for the test - we need to trigger a click event:
6 . 12
it('should render clicked if button is clicked', () => {
const Constructor = Vue.extend(Test)
const vm = new Constructor().$mount()
const button = vm.$el.querySelector('.test .change-button')
const clickEvent = new window.Event('click')
button.dispatchEvent(clickEvent)
vm._watcher.run()
expect(vm.$el.querySelector('.test h1').textContent)
.to.equal('clicked')
})
6 . 13
e2e test - Nightwatch enables us to spin up a browser.
Interact with our app and assert on the result
6 . 14
Scenario: take our test component, click the button
and assert it shows 'clicked'
6 . 15
browser
.url(devServer)
.waitForElementVisible('#app', 5000)
.assert.elementPresent('.test')
.assert.containsText('.test h1', 'Testing...')
.assert.elementPresent('.change-button')
.click('.change-button')
.assert.containsText('.test h1', 'clicked')
.end()
6 . 16
Scenario: take our test component, write in the input
field, assert our component shows that data
6 . 17
browser
.url(devServer)
.waitForElementVisible('#app', 5000)
.assert.elementPresent('.test')
.setValue('.test-input', 'abc')
.assert.containsText('.test h1', 'abc')
.end()
6 . 18
Core team member, @eddyerburgh Edd Yerburgh,
https://www.manning.com/books/testing-vuejs-
applications
6 . 19
Wasn't that exciting
6 . 20
zzzzz...
6 . 21
Just one more thing, state management with VUEX
6 . 22
VUEXVUEX
CENTRALIZED STATE MANAGEMENT FOR VUE.JSCENTRALIZED STATE MANAGEMENT FOR VUE.JS
7 . 1
All of our application state live in a store
7 . 2
Hello store
7 . 3
<html>
<body>
<div id="app">
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/
<script src="https://unpkg.com/vuex"></script>
<script src="app.js"></script>
<script src="//0.0.0.0:35729/livereload.js?snipver=1" async=
</html>
7 . 4
Instantiating the store
7 . 5
const store = new Vuex.Store({
state: {
count: 0,
},
})
7 . 6
Read from it
7 . 7
In a component
set up a computed property
show through interpolation {{}}
7 . 8
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
},
computed: {
count: function() {
return this.$store.count;
}
},
store
})
7 . 9
And showing it
7 . 10
{{ count }} // 0
7 . 11
change it
7 . 12
MUTATIONSMUTATIONS
7 . 13
const store = new Vuex.Store({
state: {
count: 0,
},
mutations: {
increment (state) {
state.count++; // mutating state
},
decrement (state) {
state.count--; // mutating state
}
}
})
7 . 14
calling a mutation
7 . 15
this.$store.commit('mutationName')
Vue.component('Counter', {
template: `
<div>
<button @click="increment">Increment</button>
<button @click="decrement">Decrement</button>
</div>>
`,
methods: {
increment() {
this.$store.commit('increment');
},
decrement() {
this.$store.commit('decrement');
}
}
7 . 16
We can also commit() with a payload
7 . 17
increment() {
this.$store.commit('addProduct', this.newProduct);
}
7 . 18
How do we access the payload in the store?
7 . 19
mutations: {
addProduct(state, payload) {
this.products = [ ...this.state.products, { ...payload }]
}
}
7 . 20
ACTIONSACTIONS
7 . 21
Does NOT mutate state
Calls .commit() when done
Can be asynchronous
we dispatch() actions
7 . 22
Defining it
7 . 23
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
// called 2nd
increment() {
this.state.count++;
}
},
actions: {
// called 1st on dispatch()
increment(context) {
context.commit('increment')
}
7 . 24
Calling an action from a component
7 . 25
Vue.component('product', {
template: `
<div>
{{ count }}
<button v-on:click="increment">Increment</button>
</div>
`,
methods: {
increment() {
this.$store.dispatch('increment'); // calling action
}
}
})
7 . 26
Asynchronous Scenario
7 . 27
set loading state to true ( e.g show spinner )
fetch our data
set data or error
set loading to false
7 . 28
actions: {
loadProducts({ commit, state }) {
commit('loading');
try{
const products = await api.getProducts();
commit('products', products);
} catch (err) {
commit('error', err);
}
}
}
7 . 29
our state can be over crowded
7 . 30
SOLUTION: store modules
7 . 31
We go from having all the state in one store to having
many stores
7 . 32
modules
const store = new Vuex.Store({
state: {
count: 0
},
modules : {
moduleA,
moduleB
}
})
7 . 33
We define a store module, just like a normal store
7 . 34
const moduleB = {
state: {
b: 'bbbb'
},
mutations: {
change(state, val) {
console.log('local state', state.b);
console.log('global state', this.state.moduleB.b);
this.state.moduleB.b = val;
}
}
}
7 . 35
SUMMARYSUMMARY
8 . 1
We had a look at Vue and we tried to cover
Components
Routing
Testing
Vuex
8 . 2
FURTHER READINGFURTHER READING
8 . 3
Official documentation, https://vuejs.org/v2/guide/
The rest of the core team, well worth following,
https://vuejs.org/v2/guide/team.html
8 . 4
Good bye and thank you for listening
@chris_noring,
https://github.com/so chris/vuejs-book
8 . 5

Mais conteúdo relacionado

Mais procurados

Asp netmvc e03
Asp netmvc e03Asp netmvc e03
Asp netmvc e03Yu GUAN
 
Selenium my sql and junit user guide
Selenium my sql and junit user guideSelenium my sql and junit user guide
Selenium my sql and junit user guideFahad Shiekh
 
React & Redux for noobs
React & Redux for noobsReact & Redux for noobs
React & Redux for noobs[T]echdencias
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!David Gibbons
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Ontico
 
Cis407 a ilab 5 web application development devry university
Cis407 a ilab 5 web application development devry universityCis407 a ilab 5 web application development devry university
Cis407 a ilab 5 web application development devry universitylhkslkdh89009
 
Making React Native UI Components with Swift
Making React Native UI Components with SwiftMaking React Native UI Components with Swift
Making React Native UI Components with SwiftRay Deck
 
Guice tutorial
Guice tutorialGuice tutorial
Guice tutorialAnh Quân
 
3 Simple Steps to follow to Create React JS Components
3 Simple Steps to follow to Create React JS Components3 Simple Steps to follow to Create React JS Components
3 Simple Steps to follow to Create React JS ComponentsSurendra kumar
 
JavaFX – 10 things I love about you
JavaFX – 10 things I love about youJavaFX – 10 things I love about you
JavaFX – 10 things I love about youAlexander Casall
 
Plugin for Plugin, или расширяем Android New Build System. Антон Руткевич
 Plugin for Plugin, или расширяем Android New Build System. Антон Руткевич Plugin for Plugin, или расширяем Android New Build System. Антон Руткевич
Plugin for Plugin, или расширяем Android New Build System. Антон РуткевичYandex
 

Mais procurados (20)

Asp netmvc e03
Asp netmvc e03Asp netmvc e03
Asp netmvc e03
 
Selenium my sql and junit user guide
Selenium my sql and junit user guideSelenium my sql and junit user guide
Selenium my sql and junit user guide
 
Spring 2.5
Spring 2.5Spring 2.5
Spring 2.5
 
React & Redux for noobs
React & Redux for noobsReact & Redux for noobs
React & Redux for noobs
 
Grails Advanced
Grails Advanced Grails Advanced
Grails Advanced
 
JavaFX Pitfalls
JavaFX PitfallsJavaFX Pitfalls
JavaFX Pitfalls
 
How to Webpack your Django!
How to Webpack your Django!How to Webpack your Django!
How to Webpack your Django!
 
04b swing tutorial
04b swing tutorial04b swing tutorial
04b swing tutorial
 
Spock's New Tricks
Spock's New TricksSpock's New Tricks
Spock's New Tricks
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
 
Cis407 a ilab 5 web application development devry university
Cis407 a ilab 5 web application development devry universityCis407 a ilab 5 web application development devry university
Cis407 a ilab 5 web application development devry university
 
Making React Native UI Components with Swift
Making React Native UI Components with SwiftMaking React Native UI Components with Swift
Making React Native UI Components with Swift
 
Gae
GaeGae
Gae
 
Angular mix chrisnoring
Angular mix chrisnoringAngular mix chrisnoring
Angular mix chrisnoring
 
Android how to hellowidget
Android how to hellowidgetAndroid how to hellowidget
Android how to hellowidget
 
Guice tutorial
Guice tutorialGuice tutorial
Guice tutorial
 
3 Simple Steps to follow to Create React JS Components
3 Simple Steps to follow to Create React JS Components3 Simple Steps to follow to Create React JS Components
3 Simple Steps to follow to Create React JS Components
 
Android TDD
Android TDDAndroid TDD
Android TDD
 
JavaFX – 10 things I love about you
JavaFX – 10 things I love about youJavaFX – 10 things I love about you
JavaFX – 10 things I love about you
 
Plugin for Plugin, или расширяем Android New Build System. Антон Руткевич
 Plugin for Plugin, или расширяем Android New Build System. Антон Руткевич Plugin for Plugin, или расширяем Android New Build System. Антон Руткевич
Plugin for Plugin, или расширяем Android New Build System. Антон Руткевич
 

Semelhante a Vue fundamentasl with Testing and Vuex

Introduction to VueJS & Vuex
Introduction to VueJS & VuexIntroduction to VueJS & Vuex
Introduction to VueJS & VuexBernd Alter
 
Beginner’s tutorial (part 2) how to integrate redux-saga in react native app
Beginner’s tutorial (part 2) how to integrate redux-saga in react native appBeginner’s tutorial (part 2) how to integrate redux-saga in react native app
Beginner’s tutorial (part 2) how to integrate redux-saga in react native appKaty Slemon
 
Introducing Vuex in your project
Introducing Vuex in your projectIntroducing Vuex in your project
Introducing Vuex in your projectDenny Biasiolli
 
State manager in Vue.js, from zero to Vuex
State manager in Vue.js, from zero to VuexState manager in Vue.js, from zero to Vuex
State manager in Vue.js, from zero to VuexCommit University
 
Is it time to migrate to Vue 3?
Is it time to migrate to Vue 3?Is it time to migrate to Vue 3?
Is it time to migrate to Vue 3?Denny Biasiolli
 
Vue JS @ MindDoc. The progressive road to online therapy
Vue JS @ MindDoc. The progressive road to online therapyVue JS @ MindDoc. The progressive road to online therapy
Vue JS @ MindDoc. The progressive road to online therapyDarío Blanco Iturriaga
 
Laravel 8 export data as excel file with example
Laravel 8 export data as excel file with exampleLaravel 8 export data as excel file with example
Laravel 8 export data as excel file with exampleKaty Slemon
 
Using Renderless Components in Vue.js during your software development.
Using Renderless Components in Vue.js during your software development.Using Renderless Components in Vue.js during your software development.
Using Renderless Components in Vue.js during your software development.tothepointIT
 
Is it time to migrate to Vue 3?
Is it time to migrate to Vue 3?Is it time to migrate to Vue 3?
Is it time to migrate to Vue 3?Denny Biasiolli
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applicationsAstrails
 
How to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScriptHow to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScriptKaty Slemon
 
How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0Takuya Tejima
 
How to develop a gateway service using code based implementation
How to develop a gateway service using code based implementationHow to develop a gateway service using code based implementation
How to develop a gateway service using code based implementationnitin2517
 
How to build crud application using vue js, graphql, and hasura
How to build crud application using vue js, graphql, and hasuraHow to build crud application using vue js, graphql, and hasura
How to build crud application using vue js, graphql, and hasuraKaty Slemon
 
webpack 101 slides
webpack 101 slideswebpack 101 slides
webpack 101 slidesmattysmith
 

Semelhante a Vue fundamentasl with Testing and Vuex (20)

Angular 2 introduction
Angular 2 introductionAngular 2 introduction
Angular 2 introduction
 
Introduction to VueJS & Vuex
Introduction to VueJS & VuexIntroduction to VueJS & Vuex
Introduction to VueJS & Vuex
 
AngularJs-training
AngularJs-trainingAngularJs-training
AngularJs-training
 
Beginner’s tutorial (part 2) how to integrate redux-saga in react native app
Beginner’s tutorial (part 2) how to integrate redux-saga in react native appBeginner’s tutorial (part 2) how to integrate redux-saga in react native app
Beginner’s tutorial (part 2) how to integrate redux-saga in react native app
 
Introducing Vuex in your project
Introducing Vuex in your projectIntroducing Vuex in your project
Introducing Vuex in your project
 
State manager in Vue.js, from zero to Vuex
State manager in Vue.js, from zero to VuexState manager in Vue.js, from zero to Vuex
State manager in Vue.js, from zero to Vuex
 
Is it time to migrate to Vue 3?
Is it time to migrate to Vue 3?Is it time to migrate to Vue 3?
Is it time to migrate to Vue 3?
 
Vue business first
Vue business firstVue business first
Vue business first
 
Django quickstart
Django quickstartDjango quickstart
Django quickstart
 
Vue JS @ MindDoc. The progressive road to online therapy
Vue JS @ MindDoc. The progressive road to online therapyVue JS @ MindDoc. The progressive road to online therapy
Vue JS @ MindDoc. The progressive road to online therapy
 
Laravel 8 export data as excel file with example
Laravel 8 export data as excel file with exampleLaravel 8 export data as excel file with example
Laravel 8 export data as excel file with example
 
Using Renderless Components in Vue.js during your software development.
Using Renderless Components in Vue.js during your software development.Using Renderless Components in Vue.js during your software development.
Using Renderless Components in Vue.js during your software development.
 
React render props
React render propsReact render props
React render props
 
Is it time to migrate to Vue 3?
Is it time to migrate to Vue 3?Is it time to migrate to Vue 3?
Is it time to migrate to Vue 3?
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applications
 
How to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScriptHow to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScript
 
How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0
 
How to develop a gateway service using code based implementation
How to develop a gateway service using code based implementationHow to develop a gateway service using code based implementation
How to develop a gateway service using code based implementation
 
How to build crud application using vue js, graphql, and hasura
How to build crud application using vue js, graphql, and hasuraHow to build crud application using vue js, graphql, and hasura
How to build crud application using vue js, graphql, and hasura
 
webpack 101 slides
webpack 101 slideswebpack 101 slides
webpack 101 slides
 

Mais de Christoffer Noring (20)

Azure signalR
Azure signalRAzure signalR
Azure signalR
 
Game dev 101 part 3
Game dev 101 part 3Game dev 101 part 3
Game dev 101 part 3
 
Game dev 101 part 2
Game dev 101   part 2Game dev 101   part 2
Game dev 101 part 2
 
Game dev workshop
Game dev workshopGame dev workshop
Game dev workshop
 
Deploying your static web app to the Cloud
Deploying your static web app to the CloudDeploying your static web app to the Cloud
Deploying your static web app to the Cloud
 
IaaS with ARM templates for Azure
IaaS with ARM templates for AzureIaaS with ARM templates for Azure
IaaS with ARM templates for Azure
 
Learning Svelte
Learning SvelteLearning Svelte
Learning Svelte
 
Ng spain
Ng spainNg spain
Ng spain
 
Angular Schematics
Angular SchematicsAngular Schematics
Angular Schematics
 
Design thinking
Design thinkingDesign thinking
Design thinking
 
Keynote ijs
Keynote ijsKeynote ijs
Keynote ijs
 
Ngrx slides
Ngrx slidesNgrx slides
Ngrx slides
 
Kendoui
KendouiKendoui
Kendoui
 
Graphql, REST and Apollo
Graphql, REST and ApolloGraphql, REST and Apollo
Graphql, REST and Apollo
 
Rxjs vienna
Rxjs viennaRxjs vienna
Rxjs vienna
 
Rxjs marble-testing
Rxjs marble-testingRxjs marble-testing
Rxjs marble-testing
 
React lecture
React lectureReact lecture
React lecture
 
Rxjs ngvikings
Rxjs ngvikingsRxjs ngvikings
Rxjs ngvikings
 
Rxjs swetugg
Rxjs swetuggRxjs swetugg
Rxjs swetugg
 
Angular modules in depth
Angular modules in depthAngular modules in depth
Angular modules in depth
 

Último

Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 

Último (20)

Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 

Vue fundamentasl with Testing and Vuex