SlideShare a Scribd company logo
1 of 74
QUICK START
WEB
APPLICATION
DEVELOPMENT
WITH VUE3
ASSUMING HTML &
JAVASCRIPT SKILLS
Lucas Jellema
2
OVERVIEW
RAPID INTRODUCTION OF VUE 3
You will hear about web application development with Vue 3, see it in action and try it out yourself
You will not learn how it works – only to make it work for you. In a few hours from now, you will be able to develop
a rich, reactive, good looking and modern web application. You will learn how to develop and build and how to
publish (on GitHub Pages).
You need to know at least a little bit about HTML and JavaScript in order to be successful. It would not hurt to
have seen CSS and know your way around in the browser DevTools. A background in ASP.NET WebPages
(Razor), Flask, JavaServer Pages/JavaServer Faces, Low Code programming is a good startingpoint
If you know Vue 2 – you are overqualified for this session. With Angular, React or Svelte under your belt, you will
probably see similarities and differences. These will not be discussed.
3
AGENDA
• Introduction, background, history
• First steps with Vue – intro, demo & hands-on
• Components
• Expressions
• Properties, Slots, Events, Methods
• Dinner
• Closer to real world applications - – intro, demo & hands-on
• Reactive
• Software Engineering & Build
• State
• Component Libraries
• Publish Vue Web application on GitHub Pages
4
HOW THE WEB WAS WON…
5
HTML
images
THE STONE AGE OF WEB BROWSERS
• Browsers in mid ’90s:
• http requests for resources such as HTML files and images
• interpret HTML and present UI
• CSS (cascading style sheets) to apply style to structure
• support forms and button to submit form
• a tiny little bit of JavaScript (1995: Scheme, Mocha/Livescript, ..., ECMA Script – 1997, ES)
6
EARLIEST WEB APPLICATIONS
• Server side code handles HTTP Request
• serves static resources such as images and fixed HTML
• serves HTML pages – dynamically constructed
• Typical server side implementations
• PHP
• Java Servlets
followed by JavaServer Pages (JSPs)
and Apache Struts, Model View Controller (MVC)
• Perl
• Also: Java Applets, ActiveX, Flash (Shockwave player)
• mimic desktop experience from within the browser
• Browser [version] differences
7
Server
http request/response
BROWSER AND WEB EVOLUTION
• AJAX (Server Sent Requests, WebSockets, Web Workers)
• DHTML (Dynamic HTML – runtime client side HTML manipulation from JavaScript); jQuery
• Single Page [Web] Application (SPA)
• Reactive (event triggered processing)
• HTML5
• end of Java Applets and other plugins
• Mobile, progressive web app
• Desktop apps that are really web applications with prepackaged browser (Teams, VS Code, ..)
• frontend frameworks: AngularJS, Angular, React, Vue, Svelte, Aurelia, …
• Flutter, .NET Multi-platform App UI (MAUI)
• TypeScript – "JavaScript that scales "
8
[MY] WEB DEVELOPMENT FROM THE ’90S UNTIL TODAY
9
HTML 2,
JavaScript, CSS
Java Servlets
JSP (Java Server
Pages)
JavaServer Faces
(JSF)
Rich (AJAX powered) JSF
now
1999
2007
2009
Vue 3 + Vite
+ GitHub Pages
AJAX
HTML5
Reactive
AngularJS
MVVM
MVC
React
Vue
SPA
.. several failed
attempts at
mastering React …
Server side
HTML rendering
Client side
HTML rendering
Mix of client and server
side rendering
Svelte
Angular
Aurelia
TypeScript
DHTML
& jQuery
REACTIVE WEB DEVELOPMENT FRAMEWORKS
• Responsive, attractive, rich
• Structured, declarative/low code, simple to develop
• Scalable – complexity, team size
• Reuse of components
• Cross platform
• Software engineering and automation
• Tools for speeding up development | build | test | debug | monitor
• Community
• Pace of evolution
10
WHY VUE?
• I like it
• It is popular (and growing in popularity)
• It seems rich enough for many types of applications
• Vue can be a stepping stone:
Once you master Vue, adopting React and Angular will not be a huge step
• (Vue compared to React:) “Finding developers with Vue expertise is harder,
but teaching JavaScript developers how to use Vue is easier.”
11
COMPONENTS
• Vue applications are built from components
• A component is a building block that
• can render itself (HTML)
• performs logic (JavaScript)
• applies its own styles (CSS)
• holds its own state (local data)
• accepts properties to configure its behavior and appearance
• emits events to inform its parent component about actions
12
VUE COMPONENT
13
VUE COMPONENTS
14
VUE COMPONENTS
15
REUSE COMPONENTS
16
A VUE COMPONENT’S TEMPLATE CAN CONTAIN
• Standard HTML tags
• Custom Components
• such as MyComponent
• components from 3rd party libraries
• Vue attributes on standard tags
• v-if, v-else, v-for, ..
• JavaScript Expressions
• for attribute values – through :
• for event handling – through @
• for content rendering
moustache expression {{}}
17
A VUE COMPONENT’S TEMPLATE CAN CONTAIN
18
JAVASCRIPT EXPRESSIONS
• use locally defined functions and variables
• inside the component itself
• use any valid JavaScript function
• use a restricted list of globals
• including Regexp, Math, String and Date
19
Source code
BETWEEN DEVELOPMENT AND RUN IS TRANSPILATION
20
Source Code
Executable
Code
HTML,
JavaScript, CSS
.vue, TypeScript,
<anything>
CHILD COMPONENTS
• When you use a component, you can pass
• values for exposed properties
• content for predefined slots
• Capture and handle events emitted by the component
21
Component
properties
slots
slot X
slot Y
events
CHILD COMPONENT INTERACTIONS
22
SomeComponent
properties
MainComponent
<SomeComponent >
</SomeComponent>
<template>
</template>
<script setup>
import SomeComponent
from './SomeComponent.vue'
</script>
CHILD COMPONENTS - PROPERTIES
• When a component uses a child component it can pass values for properties to the child
• The properties are available as local read-only variables in the context of the child component
23
SomeComponent
properties
<p>{{nameOfProperty}}</p>
<input :value="nameOfProperty”>
</input>
MainComponent
<SomeComponent
nameOfProperty="value">
</SomeComponent>
CHILD COMPONENTS – SLOTS
FOR PASSING CONTENT FRAGMENTS TO CHILD
• When a component uses a child component it can pass fragments of (HTML) content to the child into
predefined slots
• These fragments are processed in the corresponding slot elements in the child’s template
24
SomeComponent
properties
<p>{{nameOfProperty}}</p>
<input :value="nameOfProperty”>
</input>
MainComponent
<SomeComponent
nameOfProperty="value">
</SomeComponent>
<slot> <slot />
<slot name="footer"> <slot />
slots
<template v-slot:footer>
<h3>Special Message </h3>
</template>
<div id="box">
<h1 class="teaser">Announcement</h1>
</div>
CHILD COMPONENTS – EMITTING EVENTS
• A [child] component can emit events – to inform a parent about something of interest
• Events can be captured and handled by the parent in JavaScript handlers
25
SomeComponent
properties
<p>{{nameOfProperty}}</p>
<input :value="nameOfProperty”>
</input>
MainComponent
<SomeComponent
nameOfProperty="value“
>
</SomeComponent>
<button @click="$emit('clicked')">
Please – click me!
</button>
<slot name="footer"> <slot />
slots
<template v-slot:footer>
<h3>Special Message </h3>
</template>
events
@clicked="(event) => {
console.log('CHILD CLICKED’)}"
METHODS
• Locally defined JavaScript functions can be invoked from expressions and as event handlers
27
SomeComponent
properties
<p>{{nameOfProperty}}</p>
<input :value="nameOfProperty”>
</input>
MainComponent
<template>
<SomeComponent
nameOfProperty="value"
@clicked=“clickHandler()" >
<SomeComponent />
</template> <button @click="$emit('clicked')">
Please – click me!
</button>
<slot name="footer"> <slot />
slots
<script setup>
function clickHandler() {
console.log('CHILD CLICKED')
}
</script>
events
STYLE
• Components can contain a <style> fragment – in addition to <template> and <script>
• Local CSS style definitions – intended only for the component itself – are defined here
28
MainComponent
<template>
<h1 class="yellow-page">Yellow Pages</h1>
<SomeComponent
nameOfProperty="value" >
<SomeComponent />
</template>
<script setup>
import SomeComponent from './SomeComponent.vue'
</script>
<style>
h1 {font-family: 'Courier New', Courier, monospace;}
.yellow-page {background-color: yellow;}
</style>
HANDSON - YOU GO PLAY!
• github.com/lucasjellema/code-face-vue3-intro-reactiive-webapps-aug2023
29
DINNER
30
AGENDA
• Introduction, background, history
• First steps with Vue – intro, demo & hands-on
• Components
• Expressions
• Properties, Slots, Events, Methods
• Dinner
• Closer to real world applications - – intro, demo & hands-on
• Reactive
• Software Engineering & Build
• State
• Component Libraries
• Publish Vue Web application on GitHub Pages
• Next steps …
31
REACTIVE
• Declarative two-way
binding from UI
Components to data
element
• All UI components that
depend on a data
element are refreshed
whenever the value
changes
• without explicit action
by the developer or
additional supporting
code
32
reactive
data
element
REACTIVE
• Declarative two-way
binding from UI
Components to data
element
• All UI components that
depend on a data
element are refreshed
whenever the value
changes
• without explicit action
by the developer or
additional supporting
code
33
reactive
data
element
The value: 42
Repeat: 42
42
REACTIVE – CHANGE TRIGGERS ACTION
• Declarative two-way
binding from UI
Components to data
element
• All UI components that
depend on a data
element are refreshed
whenever the value
changes
• without explicit action
by the developer or
additional supporting
code
34
reactive
data
element
The value: 42
Repeat: 42
42
13
Repeat: 13
The value: 13
REACTIVE
35
reactive
data
element
The value: 42
Repeat: is really is 42
42
PROGRAMMATIC MANIPULATION OF REACTIVE DATA
36
reactive
data
element
The value: 42
Repeat: is really is 42
42 Double
update the data
element to twice its
current value
function
PROGRAMMATIC MANIPULATION OF REACTIVE DATA
37
reactive
data
element
The value: 42
Repeat: is really is 42
42 Double
update the data
element to twice its
current value
function
VUE IN THE PLAYGROUND
38
DEMO REACTIVE TOGGLE
39
WATCH:
PROGRAMMATIC OBSERVATION OF REACTIVE DATA
40
reactive
data
element
The value: 42
Repeat: is really is 42
42
• Programmatic reaction to value change
• Configure a listener for a reactive data element
• to be invoked whenever the data changes
watcher
subscribe
WATCH
41
reactive
data
element
The value: 42
Repeat: is really is 42
42
watcher
subscribe
Double
update the data
element to twice its
current value
DECLARATIVE WATCHER: COMPUTED
42
reactive
data
element
The double value: 84
Repeat: is really is 42
42
watcher
subscribe
Double
update the data
element to twice its
current value
computed
property
doubeValue
AGENDA
• Introduction, background, history
• First steps with Vue – intro, demo & hands-on
• Components
• Expressions
• Properties, Slots, Events, Methods
• Dinner
• Closer to real world applications - – intro, demo & hands-on
• Reactive
• Software Engineering & Build
• State
• Component Libraries
• Publish Vue Web application on GitHub Pages
• Next steps …
43
VUE SOFTWARE DELIVERY PROCESS
44
Develop
Sources
(.vue, .html, npm
packages, …)
Format, QA,
Test,
Transpile,
Bundle
Deploy/Publish
& Run
code completion
formatting
syntax check | “compilation”
Hot Reload
VUE – SPECIAL DEVELOPMENT ENVIRONMENTS
• StackBlitz
• browser based – leveraging WebAssembly & WebContainer
• Node, npm, Vite all run inside your browser
• Gitpod.io
• cloud based, browser accessed
• Node, npm, Vite all run in an ephemeral cloud based Linux machine
– accessed through a browser
46
STACKBLITZ
47
GITPOD
48
AGENDA
• Introduction, background, history
• First steps with Vue – intro, demo & hands-on
• Components
• Expressions
• Properties, Slots, Events, Methods
• Dinner
• Closer to real world applications - – intro, demo & hands-on
• Reactive
• Software Engineering & Build
• State
• Component Libraries
• Publish Vue Web application on GitHub Pages
• Next steps …
49
STATE (MODEL) – CROSS COMPONENT DATA
• Components manage their own [internal] state
• parent inject properties into children
• children emit events for capture by parents
• Some state is
• retrieved from a backend service (database , API, file, ..)
• shared across multiple components
• Vue applications use “state stores” as containers for such state
• and decouple state management from UI components
50
state
stores
SHARED STATE MANAGED IN STATE STORE
ACROSS COMPONENTS
51
Component A
Component B
Component C
state
state store
getters
actions
SHARED STATE MANAGED IN STATE STORES
52
Component A
Component B
Component C
state
state
state stores
getters
actions
getters
actions
SHARED STATE MANAGED IN STATE STORES
53
Component A
Component B
Component C
state
state
state stores
getters
actions
getters
actions
Database
file
file
REST API
REST API
Server
Client
USING PINIA
• Instantiate Vue application with Pinia enabled or: npm install pinia --save
• Initialize Pinia and inject into Vue App
• Define Store – id, state, getters (computed), actions
• Use Store in Components
54
main.js App.vue HelloWorld.vue greetingState.js
USING PINIA
55
main.js App.vue HelloWorld.vue greetingState.js
USING PINIA STATE STORE ACROSS COMPONENTS
56
main.js App.vue HelloWorld.vue greetingState.js
MessageComposer.vue
USING PINIA STATE STORE ACROSS COMPONENTS
57
main.js App.vue HelloWorld.vue greetingState.js
MessageComposer.vue
AGENDA
• Introduction, background, history
• First steps with Vue – intro, demo & hands-on
• Components
• Expressions
• Properties, Slots, Events, Methods
• Dinner
• Closer to real world applications - – intro, demo & hands-on
• Reactive
• Software Engineering & Build
• State
• Component Libraries
• Publish Vue Web application on GitHub Pages
• Next steps …
58
ADVANCED USER INTERFACE FOR COMPLEX DATA
• Assume we have a complex data set that we want to present to the user
• can we use predefined UI components to quickly create a functionally rich and visually pleasing front end?
59
VUE COMPONENT LIBRARYS
• explore
• install
• use
6
PRIMEVUE COMPONENT LIBRARY
• explore
• install
• use
USE PRIMEVUE COMPONENT LIBRARY
• Dozens of components
• simple to quite complex
• Free to use
• Add to your application:
• npm install primevue --save
• Import PrimeVue component into
your component or view (or application wide)
• import PrimeVue from 'primevue/config';
• import DataTable from 'primevue/datatable’;
• Initialize use of PrimeVue in app.vue
• app.use(PrimeVue);
• Use PrimeVue component tag in your template
<DataTable :value="peopleStore.people" tableStyle="min-width: 50rem">
<Column field="first_name" header="First Name"> </Column>
62
EXAMPLE OF USING PRIMEVUE DATATABLE
63
PRIMEVUE DATATABLE FEATURES
• Structured, formatted presentation of data
• Sort
• Filter – global and per column
• Pagination
• Draggable Columns
• Expandable Rows
• Row selection
• Scrolling (frozen rows, frozen columns)
• Conditional styling
• Export (to CSV)
• Context Menu
• Keyboard support
64
AGENDA
• Introduction, background, history
• First steps with Vue – intro, demo & hands-on
• Components
• Expressions
• Properties, Slots, Events, Methods
• Dinner
• Closer to real world applications - – intro, demo & hands-on
• Reactive
• Software Engineering & Build
• State
• Component Libraries
• Publish Vue Web application on GitHub Pages
• Next steps …
65
PUBLISH AND SHARE YOUR WEB APP
66
PUBLISH VUE APPLICATION ON GITHUB PAGES
• Make your Vue application available on a public URL: everyone can access it
• One easy and free way: GitHub Pages
• expose static website from a GitHub Repository
67
STEPS WITH GITHUB PAGES
Preparation
• npm install gh-pages - -save-dev
• edit package.json: add scripts and homepage
• edit file vite.config.ts: add property base
For every release
• npm run deploy
68
QUICK SESSION OVERVIEW
• Components
• template, script, style
• {{ }} expressions and <tag :attribute @handler v-if: > annotated/wired attributes and handlers
• nested components – properties, slots, events
• Reactive
• declarative, two-way data binding
• Software Engineering
• IDE & development environment, code formatting, build, test, QA
• State Stores
• management of cross component session data
• Component Libraries
• productive, feature rich, high quality application development using 3rd party components
• Publish Vue application to the world
69
NEXT STEPS
• Play, Explore, Try Out
• Obvious first next topics
• Routing – navigation, multi-page
• Internationalization (i18n)
• Styling
• Add backend: interaction with Database, APIs
• Security
• Explore Component Libraries beyond PrimeVue
• Work on a private or shared Vue project – something to provide some scope, focus and purpose
• Have fun!
• Have a go at some of the additional labs for this session …
70
HANDSON - YOU GO PLAY!
• github.com/lucasjellema/code-face-vue3-intro-reactiive-webapps-aug2023
71
www.conclusion.nl
REACTIVE
• Declarative two-way
binding from UI
Components to data
element
• All UI components that
depend on a data
element are refreshed
whenever the value
changes
• without explicit action
by the developer or
additional supporting
code
73
reactive
data
element
{{msg}}
Hello World!
REACTIVE
• Declarative two-way
binding from UI
Components to data
element
• All UI components that
depend on a data
element are refreshed
whenever the value
changes
• without explicit action
by the developer or
additional supporting
code
74
reactive
data
element
{{msg}}
Hello World!
computed
reactive data
element
{{MSG}}
REACTIVE
• Declarative two-way
binding from UI
Components to data
element
• All UI components that
depend on a data
element are refreshed
whenever the value
changes
• without explicit action
by the developer or
additional supporting
code
75
reactive
data
element
{{msg}}
Hello World!
computed
reactive data
element
{{MSG}}
watch
watch
function
{{somethingCompletelyDifferent}}
INTERNATIONALIZATION (I18N)
• no boilerplate text in the code – all extracted into external files
• multiple languages/locales
• switching between locales
76

More Related Content

What's hot

Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced JavascriptAdieu
 
introduction to Vue.js 3
introduction to Vue.js 3 introduction to Vue.js 3
introduction to Vue.js 3 ArezooKmn
 
The Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.jsThe Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.jsHolly Schinsky
 
Angular tutorial
Angular tutorialAngular tutorial
Angular tutorialRohit Gupta
 
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring SecurityDzmitry Naskou
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event HandlingWebStackAcademy
 
Introduction To Angular's reactive forms
Introduction To Angular's reactive formsIntroduction To Angular's reactive forms
Introduction To Angular's reactive formsNir Kaufman
 
React + Redux Introduction
React + Redux IntroductionReact + Redux Introduction
React + Redux IntroductionNikolaus Graf
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introductionJonathan Holloway
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!Jakub Kubrynski
 
Meetup angular http client
Meetup angular http clientMeetup angular http client
Meetup angular http clientGaurav Madaan
 

What's hot (20)

Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Struts Ppt 1
Struts Ppt 1Struts Ppt 1
Struts Ppt 1
 
introduction to Vue.js 3
introduction to Vue.js 3 introduction to Vue.js 3
introduction to Vue.js 3
 
The Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.jsThe Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.js
 
Spring Core
Spring CoreSpring Core
Spring Core
 
Angular tutorial
Angular tutorialAngular tutorial
Angular tutorial
 
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring Security
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event Handling
 
Presentation1.pptx
Presentation1.pptxPresentation1.pptx
Presentation1.pptx
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Introduction To Angular's reactive forms
Introduction To Angular's reactive formsIntroduction To Angular's reactive forms
Introduction To Angular's reactive forms
 
React + Redux Introduction
React + Redux IntroductionReact + Redux Introduction
React + Redux Introduction
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
Spring ppt
Spring pptSpring ppt
Spring ppt
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
Angular
AngularAngular
Angular
 
Angular modules in depth
Angular modules in depthAngular modules in depth
Angular modules in depth
 
Meetup angular http client
Meetup angular http clientMeetup angular http client
Meetup angular http client
 
Spring boot
Spring bootSpring boot
Spring boot
 

Similar to Introduction to web application development with Vue (for absolute beginners) (Conclusion Code Café - August 2023)

Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...Lucas Jellema
 
Vue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.jsVue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.jsTakuya Tejima
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...Mark Leusink
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...Mark Roden
 
Mobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best PracticesMobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best PracticesAndrew Ferrier
 
Webcomponents are your frameworks best friend
Webcomponents are your frameworks best friendWebcomponents are your frameworks best friend
Webcomponents are your frameworks best friendFilip Bruun Bech-Larsen
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Anupam Ranku
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparisonReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison500Tech
 
MVC 6 - the new unified Web programming model
MVC 6 - the new unified Web programming modelMVC 6 - the new unified Web programming model
MVC 6 - the new unified Web programming modelAlex Thissen
 
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav TulachJDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav TulachPROIDEA
 
SharePoint Framework - Developer Preview
SharePoint Framework - Developer PreviewSharePoint Framework - Developer Preview
SharePoint Framework - Developer PreviewSean McLellan
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGuillaume Laforge
 
Introduction to Codenvy / JugSummerCamp 2014
Introduction to Codenvy / JugSummerCamp 2014Introduction to Codenvy / JugSummerCamp 2014
Introduction to Codenvy / JugSummerCamp 2014Florent BENOIT
 
Progressive Web Apps and React
Progressive Web Apps and ReactProgressive Web Apps and React
Progressive Web Apps and ReactMike Melusky
 
Backbonification for dummies - Arrrrug 10/1/2012
Backbonification for dummies - Arrrrug 10/1/2012Backbonification for dummies - Arrrrug 10/1/2012
Backbonification for dummies - Arrrrug 10/1/2012Dimitri de Putte
 
Creating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSCreating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSGunnar Hillert
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Ganesh Kondal
 
Building intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQueryBuilding intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQueryAlek Davis
 
JavaScript Modules Done Right
JavaScript Modules Done RightJavaScript Modules Done Right
JavaScript Modules Done RightMariusz Nowak
 

Similar to Introduction to web application development with Vue (for absolute beginners) (Conclusion Code Café - August 2023) (20)

Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
Oracle JavaScript Extension Toolkit Web Components Bring Agility to App Devel...
 
Vue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.jsVue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.js
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
 
Santosh_Resume_Java
Santosh_Resume_JavaSantosh_Resume_Java
Santosh_Resume_Java
 
Mobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best PracticesMobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best Practices
 
Webcomponents are your frameworks best friend
Webcomponents are your frameworks best friendWebcomponents are your frameworks best friend
Webcomponents are your frameworks best friend
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparisonReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison
 
MVC 6 - the new unified Web programming model
MVC 6 - the new unified Web programming modelMVC 6 - the new unified Web programming model
MVC 6 - the new unified Web programming model
 
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav TulachJDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
JDD2015: Java Everywhere Again—with DukeScript - Jaroslav Tulach
 
SharePoint Framework - Developer Preview
SharePoint Framework - Developer PreviewSharePoint Framework - Developer Preview
SharePoint Framework - Developer Preview
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
 
Introduction to Codenvy / JugSummerCamp 2014
Introduction to Codenvy / JugSummerCamp 2014Introduction to Codenvy / JugSummerCamp 2014
Introduction to Codenvy / JugSummerCamp 2014
 
Progressive Web Apps and React
Progressive Web Apps and ReactProgressive Web Apps and React
Progressive Web Apps and React
 
Backbonification for dummies - Arrrrug 10/1/2012
Backbonification for dummies - Arrrrug 10/1/2012Backbonification for dummies - Arrrrug 10/1/2012
Backbonification for dummies - Arrrrug 10/1/2012
 
Creating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSCreating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJS
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
 
Building intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQueryBuilding intranet applications with ASP.NET AJAX and jQuery
Building intranet applications with ASP.NET AJAX and jQuery
 
JavaScript Modules Done Right
JavaScript Modules Done RightJavaScript Modules Done Right
JavaScript Modules Done Right
 

More from Lucas Jellema

Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Lucas Jellema
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lucas Jellema
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Lucas Jellema
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...Lucas Jellema
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...Lucas Jellema
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Lucas Jellema
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)Lucas Jellema
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Lucas Jellema
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Lucas Jellema
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Lucas Jellema
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Lucas Jellema
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...Lucas Jellema
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Lucas Jellema
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Lucas Jellema
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...Lucas Jellema
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Lucas Jellema
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Lucas Jellema
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Lucas Jellema
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Lucas Jellema
 
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...Lucas Jellema
 

More from Lucas Jellema (20)

Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
Making the Shift Left - Bringing Ops to Dev before bringing applications to p...
 
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
Lightweight coding in powerful Cloud Development Environments (DigitalXchange...
 
Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...Apache Superset - open source data exploration and visualization (Conclusion ...
Apache Superset - open source data exploration and visualization (Conclusion ...
 
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
CONNECTING THE REAL WORLD TO ENTERPRISE IT – HOW IoT DRIVES OUR ENERGY TRANSI...
 
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...Help me move away from Oracle - or not?!  (Oracle Community Tour EMEA - LVOUG...
Help me move away from Oracle - or not?! (Oracle Community Tour EMEA - LVOUG...
 
Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!Op je vingers tellen... tot 1000!
Op je vingers tellen... tot 1000!
 
IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)IoT - from prototype to enterprise platform (DigitalXchange 2022)
IoT - from prototype to enterprise platform (DigitalXchange 2022)
 
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
Who Wants to Become an IT Architect-A Look at the Bigger Picture - DigitalXch...
 
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
Steampipe - use SQL to retrieve data from cloud, platforms and files (Code Ca...
 
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
Automation of Software Engineering with OCI DevOps Build and Deployment Pipel...
 
Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...Introducing Dapr.io - the open source personal assistant to microservices and...
Introducing Dapr.io - the open source personal assistant to microservices and...
 
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
How and Why you can and should Participate in Open Source Projects (AMIS, Sof...
 
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
Microservices, Apache Kafka, Node, Dapr and more - Part Two (Fontys Hogeschoo...
 
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
Microservices, Node, Dapr and more - Part One (Fontys Hogeschool, Spring 2022)
 
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
6Reinventing Oracle Systems in a Cloudy World (RMOUG Trainingdays, February 2...
 
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
Help me move away from Oracle! (RMOUG Training Days 2022, February 2022)
 
Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)Tech Talks 101 - DevOps (jan 2022)
Tech Talks 101 - DevOps (jan 2022)
 
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
Conclusion Code Cafe - Microcks for Mocking and Testing Async APIs (January 2...
 
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...Cloud Native Application Development - build fast, low TCO, scalable & agile ...
Cloud Native Application Development - build fast, low TCO, scalable & agile ...
 
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
Software Engineering as the Next Level Up from Programming (Oracle Groundbrea...
 

Recently uploaded

Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 

Recently uploaded (20)

Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 

Introduction to web application development with Vue (for absolute beginners) (Conclusion Code Café - August 2023)

  • 1.
  • 2. QUICK START WEB APPLICATION DEVELOPMENT WITH VUE3 ASSUMING HTML & JAVASCRIPT SKILLS Lucas Jellema 2
  • 3. OVERVIEW RAPID INTRODUCTION OF VUE 3 You will hear about web application development with Vue 3, see it in action and try it out yourself You will not learn how it works – only to make it work for you. In a few hours from now, you will be able to develop a rich, reactive, good looking and modern web application. You will learn how to develop and build and how to publish (on GitHub Pages). You need to know at least a little bit about HTML and JavaScript in order to be successful. It would not hurt to have seen CSS and know your way around in the browser DevTools. A background in ASP.NET WebPages (Razor), Flask, JavaServer Pages/JavaServer Faces, Low Code programming is a good startingpoint If you know Vue 2 – you are overqualified for this session. With Angular, React or Svelte under your belt, you will probably see similarities and differences. These will not be discussed. 3
  • 4. AGENDA • Introduction, background, history • First steps with Vue – intro, demo & hands-on • Components • Expressions • Properties, Slots, Events, Methods • Dinner • Closer to real world applications - – intro, demo & hands-on • Reactive • Software Engineering & Build • State • Component Libraries • Publish Vue Web application on GitHub Pages 4
  • 5. HOW THE WEB WAS WON… 5 HTML images
  • 6. THE STONE AGE OF WEB BROWSERS • Browsers in mid ’90s: • http requests for resources such as HTML files and images • interpret HTML and present UI • CSS (cascading style sheets) to apply style to structure • support forms and button to submit form • a tiny little bit of JavaScript (1995: Scheme, Mocha/Livescript, ..., ECMA Script – 1997, ES) 6
  • 7. EARLIEST WEB APPLICATIONS • Server side code handles HTTP Request • serves static resources such as images and fixed HTML • serves HTML pages – dynamically constructed • Typical server side implementations • PHP • Java Servlets followed by JavaServer Pages (JSPs) and Apache Struts, Model View Controller (MVC) • Perl • Also: Java Applets, ActiveX, Flash (Shockwave player) • mimic desktop experience from within the browser • Browser [version] differences 7 Server http request/response
  • 8. BROWSER AND WEB EVOLUTION • AJAX (Server Sent Requests, WebSockets, Web Workers) • DHTML (Dynamic HTML – runtime client side HTML manipulation from JavaScript); jQuery • Single Page [Web] Application (SPA) • Reactive (event triggered processing) • HTML5 • end of Java Applets and other plugins • Mobile, progressive web app • Desktop apps that are really web applications with prepackaged browser (Teams, VS Code, ..) • frontend frameworks: AngularJS, Angular, React, Vue, Svelte, Aurelia, … • Flutter, .NET Multi-platform App UI (MAUI) • TypeScript – "JavaScript that scales " 8
  • 9. [MY] WEB DEVELOPMENT FROM THE ’90S UNTIL TODAY 9 HTML 2, JavaScript, CSS Java Servlets JSP (Java Server Pages) JavaServer Faces (JSF) Rich (AJAX powered) JSF now 1999 2007 2009 Vue 3 + Vite + GitHub Pages AJAX HTML5 Reactive AngularJS MVVM MVC React Vue SPA .. several failed attempts at mastering React … Server side HTML rendering Client side HTML rendering Mix of client and server side rendering Svelte Angular Aurelia TypeScript DHTML & jQuery
  • 10. REACTIVE WEB DEVELOPMENT FRAMEWORKS • Responsive, attractive, rich • Structured, declarative/low code, simple to develop • Scalable – complexity, team size • Reuse of components • Cross platform • Software engineering and automation • Tools for speeding up development | build | test | debug | monitor • Community • Pace of evolution 10
  • 11. WHY VUE? • I like it • It is popular (and growing in popularity) • It seems rich enough for many types of applications • Vue can be a stepping stone: Once you master Vue, adopting React and Angular will not be a huge step • (Vue compared to React:) “Finding developers with Vue expertise is harder, but teaching JavaScript developers how to use Vue is easier.” 11
  • 12. COMPONENTS • Vue applications are built from components • A component is a building block that • can render itself (HTML) • performs logic (JavaScript) • applies its own styles (CSS) • holds its own state (local data) • accepts properties to configure its behavior and appearance • emits events to inform its parent component about actions 12
  • 17. A VUE COMPONENT’S TEMPLATE CAN CONTAIN • Standard HTML tags • Custom Components • such as MyComponent • components from 3rd party libraries • Vue attributes on standard tags • v-if, v-else, v-for, .. • JavaScript Expressions • for attribute values – through : • for event handling – through @ • for content rendering moustache expression {{}} 17
  • 18. A VUE COMPONENT’S TEMPLATE CAN CONTAIN 18
  • 19. JAVASCRIPT EXPRESSIONS • use locally defined functions and variables • inside the component itself • use any valid JavaScript function • use a restricted list of globals • including Regexp, Math, String and Date 19
  • 20. Source code BETWEEN DEVELOPMENT AND RUN IS TRANSPILATION 20 Source Code Executable Code HTML, JavaScript, CSS .vue, TypeScript, <anything>
  • 21. CHILD COMPONENTS • When you use a component, you can pass • values for exposed properties • content for predefined slots • Capture and handle events emitted by the component 21 Component properties slots slot X slot Y events
  • 22. CHILD COMPONENT INTERACTIONS 22 SomeComponent properties MainComponent <SomeComponent > </SomeComponent> <template> </template> <script setup> import SomeComponent from './SomeComponent.vue' </script>
  • 23. CHILD COMPONENTS - PROPERTIES • When a component uses a child component it can pass values for properties to the child • The properties are available as local read-only variables in the context of the child component 23 SomeComponent properties <p>{{nameOfProperty}}</p> <input :value="nameOfProperty”> </input> MainComponent <SomeComponent nameOfProperty="value"> </SomeComponent>
  • 24. CHILD COMPONENTS – SLOTS FOR PASSING CONTENT FRAGMENTS TO CHILD • When a component uses a child component it can pass fragments of (HTML) content to the child into predefined slots • These fragments are processed in the corresponding slot elements in the child’s template 24 SomeComponent properties <p>{{nameOfProperty}}</p> <input :value="nameOfProperty”> </input> MainComponent <SomeComponent nameOfProperty="value"> </SomeComponent> <slot> <slot /> <slot name="footer"> <slot /> slots <template v-slot:footer> <h3>Special Message </h3> </template> <div id="box"> <h1 class="teaser">Announcement</h1> </div>
  • 25. CHILD COMPONENTS – EMITTING EVENTS • A [child] component can emit events – to inform a parent about something of interest • Events can be captured and handled by the parent in JavaScript handlers 25 SomeComponent properties <p>{{nameOfProperty}}</p> <input :value="nameOfProperty”> </input> MainComponent <SomeComponent nameOfProperty="value“ > </SomeComponent> <button @click="$emit('clicked')"> Please – click me! </button> <slot name="footer"> <slot /> slots <template v-slot:footer> <h3>Special Message </h3> </template> events @clicked="(event) => { console.log('CHILD CLICKED’)}"
  • 26. METHODS • Locally defined JavaScript functions can be invoked from expressions and as event handlers 27 SomeComponent properties <p>{{nameOfProperty}}</p> <input :value="nameOfProperty”> </input> MainComponent <template> <SomeComponent nameOfProperty="value" @clicked=“clickHandler()" > <SomeComponent /> </template> <button @click="$emit('clicked')"> Please – click me! </button> <slot name="footer"> <slot /> slots <script setup> function clickHandler() { console.log('CHILD CLICKED') } </script> events
  • 27. STYLE • Components can contain a <style> fragment – in addition to <template> and <script> • Local CSS style definitions – intended only for the component itself – are defined here 28 MainComponent <template> <h1 class="yellow-page">Yellow Pages</h1> <SomeComponent nameOfProperty="value" > <SomeComponent /> </template> <script setup> import SomeComponent from './SomeComponent.vue' </script> <style> h1 {font-family: 'Courier New', Courier, monospace;} .yellow-page {background-color: yellow;} </style>
  • 28. HANDSON - YOU GO PLAY! • github.com/lucasjellema/code-face-vue3-intro-reactiive-webapps-aug2023 29
  • 30. AGENDA • Introduction, background, history • First steps with Vue – intro, demo & hands-on • Components • Expressions • Properties, Slots, Events, Methods • Dinner • Closer to real world applications - – intro, demo & hands-on • Reactive • Software Engineering & Build • State • Component Libraries • Publish Vue Web application on GitHub Pages • Next steps … 31
  • 31. REACTIVE • Declarative two-way binding from UI Components to data element • All UI components that depend on a data element are refreshed whenever the value changes • without explicit action by the developer or additional supporting code 32 reactive data element
  • 32. REACTIVE • Declarative two-way binding from UI Components to data element • All UI components that depend on a data element are refreshed whenever the value changes • without explicit action by the developer or additional supporting code 33 reactive data element The value: 42 Repeat: 42 42
  • 33. REACTIVE – CHANGE TRIGGERS ACTION • Declarative two-way binding from UI Components to data element • All UI components that depend on a data element are refreshed whenever the value changes • without explicit action by the developer or additional supporting code 34 reactive data element The value: 42 Repeat: 42 42 13 Repeat: 13 The value: 13
  • 35. PROGRAMMATIC MANIPULATION OF REACTIVE DATA 36 reactive data element The value: 42 Repeat: is really is 42 42 Double update the data element to twice its current value function
  • 36. PROGRAMMATIC MANIPULATION OF REACTIVE DATA 37 reactive data element The value: 42 Repeat: is really is 42 42 Double update the data element to twice its current value function
  • 37. VUE IN THE PLAYGROUND 38
  • 39. WATCH: PROGRAMMATIC OBSERVATION OF REACTIVE DATA 40 reactive data element The value: 42 Repeat: is really is 42 42 • Programmatic reaction to value change • Configure a listener for a reactive data element • to be invoked whenever the data changes watcher subscribe
  • 40. WATCH 41 reactive data element The value: 42 Repeat: is really is 42 42 watcher subscribe Double update the data element to twice its current value
  • 41. DECLARATIVE WATCHER: COMPUTED 42 reactive data element The double value: 84 Repeat: is really is 42 42 watcher subscribe Double update the data element to twice its current value computed property doubeValue
  • 42. AGENDA • Introduction, background, history • First steps with Vue – intro, demo & hands-on • Components • Expressions • Properties, Slots, Events, Methods • Dinner • Closer to real world applications - – intro, demo & hands-on • Reactive • Software Engineering & Build • State • Component Libraries • Publish Vue Web application on GitHub Pages • Next steps … 43
  • 43. VUE SOFTWARE DELIVERY PROCESS 44 Develop Sources (.vue, .html, npm packages, …) Format, QA, Test, Transpile, Bundle Deploy/Publish & Run code completion formatting syntax check | “compilation” Hot Reload
  • 44. VUE – SPECIAL DEVELOPMENT ENVIRONMENTS • StackBlitz • browser based – leveraging WebAssembly & WebContainer • Node, npm, Vite all run inside your browser • Gitpod.io • cloud based, browser accessed • Node, npm, Vite all run in an ephemeral cloud based Linux machine – accessed through a browser 46
  • 47. AGENDA • Introduction, background, history • First steps with Vue – intro, demo & hands-on • Components • Expressions • Properties, Slots, Events, Methods • Dinner • Closer to real world applications - – intro, demo & hands-on • Reactive • Software Engineering & Build • State • Component Libraries • Publish Vue Web application on GitHub Pages • Next steps … 49
  • 48. STATE (MODEL) – CROSS COMPONENT DATA • Components manage their own [internal] state • parent inject properties into children • children emit events for capture by parents • Some state is • retrieved from a backend service (database , API, file, ..) • shared across multiple components • Vue applications use “state stores” as containers for such state • and decouple state management from UI components 50 state stores
  • 49. SHARED STATE MANAGED IN STATE STORE ACROSS COMPONENTS 51 Component A Component B Component C state state store getters actions
  • 50. SHARED STATE MANAGED IN STATE STORES 52 Component A Component B Component C state state state stores getters actions getters actions
  • 51. SHARED STATE MANAGED IN STATE STORES 53 Component A Component B Component C state state state stores getters actions getters actions Database file file REST API REST API Server Client
  • 52. USING PINIA • Instantiate Vue application with Pinia enabled or: npm install pinia --save • Initialize Pinia and inject into Vue App • Define Store – id, state, getters (computed), actions • Use Store in Components 54 main.js App.vue HelloWorld.vue greetingState.js
  • 53. USING PINIA 55 main.js App.vue HelloWorld.vue greetingState.js
  • 54. USING PINIA STATE STORE ACROSS COMPONENTS 56 main.js App.vue HelloWorld.vue greetingState.js MessageComposer.vue
  • 55. USING PINIA STATE STORE ACROSS COMPONENTS 57 main.js App.vue HelloWorld.vue greetingState.js MessageComposer.vue
  • 56. AGENDA • Introduction, background, history • First steps with Vue – intro, demo & hands-on • Components • Expressions • Properties, Slots, Events, Methods • Dinner • Closer to real world applications - – intro, demo & hands-on • Reactive • Software Engineering & Build • State • Component Libraries • Publish Vue Web application on GitHub Pages • Next steps … 58
  • 57. ADVANCED USER INTERFACE FOR COMPLEX DATA • Assume we have a complex data set that we want to present to the user • can we use predefined UI components to quickly create a functionally rich and visually pleasing front end? 59
  • 58. VUE COMPONENT LIBRARYS • explore • install • use 6
  • 59. PRIMEVUE COMPONENT LIBRARY • explore • install • use
  • 60. USE PRIMEVUE COMPONENT LIBRARY • Dozens of components • simple to quite complex • Free to use • Add to your application: • npm install primevue --save • Import PrimeVue component into your component or view (or application wide) • import PrimeVue from 'primevue/config'; • import DataTable from 'primevue/datatable’; • Initialize use of PrimeVue in app.vue • app.use(PrimeVue); • Use PrimeVue component tag in your template <DataTable :value="peopleStore.people" tableStyle="min-width: 50rem"> <Column field="first_name" header="First Name"> </Column> 62
  • 61. EXAMPLE OF USING PRIMEVUE DATATABLE 63
  • 62. PRIMEVUE DATATABLE FEATURES • Structured, formatted presentation of data • Sort • Filter – global and per column • Pagination • Draggable Columns • Expandable Rows • Row selection • Scrolling (frozen rows, frozen columns) • Conditional styling • Export (to CSV) • Context Menu • Keyboard support 64
  • 63. AGENDA • Introduction, background, history • First steps with Vue – intro, demo & hands-on • Components • Expressions • Properties, Slots, Events, Methods • Dinner • Closer to real world applications - – intro, demo & hands-on • Reactive • Software Engineering & Build • State • Component Libraries • Publish Vue Web application on GitHub Pages • Next steps … 65
  • 64. PUBLISH AND SHARE YOUR WEB APP 66
  • 65. PUBLISH VUE APPLICATION ON GITHUB PAGES • Make your Vue application available on a public URL: everyone can access it • One easy and free way: GitHub Pages • expose static website from a GitHub Repository 67
  • 66. STEPS WITH GITHUB PAGES Preparation • npm install gh-pages - -save-dev • edit package.json: add scripts and homepage • edit file vite.config.ts: add property base For every release • npm run deploy 68
  • 67. QUICK SESSION OVERVIEW • Components • template, script, style • {{ }} expressions and <tag :attribute @handler v-if: > annotated/wired attributes and handlers • nested components – properties, slots, events • Reactive • declarative, two-way data binding • Software Engineering • IDE & development environment, code formatting, build, test, QA • State Stores • management of cross component session data • Component Libraries • productive, feature rich, high quality application development using 3rd party components • Publish Vue application to the world 69
  • 68. NEXT STEPS • Play, Explore, Try Out • Obvious first next topics • Routing – navigation, multi-page • Internationalization (i18n) • Styling • Add backend: interaction with Database, APIs • Security • Explore Component Libraries beyond PrimeVue • Work on a private or shared Vue project – something to provide some scope, focus and purpose • Have fun! • Have a go at some of the additional labs for this session … 70
  • 69. HANDSON - YOU GO PLAY! • github.com/lucasjellema/code-face-vue3-intro-reactiive-webapps-aug2023 71
  • 71. REACTIVE • Declarative two-way binding from UI Components to data element • All UI components that depend on a data element are refreshed whenever the value changes • without explicit action by the developer or additional supporting code 73 reactive data element {{msg}} Hello World!
  • 72. REACTIVE • Declarative two-way binding from UI Components to data element • All UI components that depend on a data element are refreshed whenever the value changes • without explicit action by the developer or additional supporting code 74 reactive data element {{msg}} Hello World! computed reactive data element {{MSG}}
  • 73. REACTIVE • Declarative two-way binding from UI Components to data element • All UI components that depend on a data element are refreshed whenever the value changes • without explicit action by the developer or additional supporting code 75 reactive data element {{msg}} Hello World! computed reactive data element {{MSG}} watch watch function {{somethingCompletelyDifferent}}
  • 74. INTERNATIONALIZATION (I18N) • no boilerplate text in the code – all extracted into external files • multiple languages/locales • switching between locales 76

Editor's Notes

  1. https://auth0.com/blog/a-brief-history-of-javascript/
  2. https://auth0.com/blog/a-brief-history-of-javascript/
  3. https://auth0.com/blog/a-brief-history-of-javascript/
  4. https://play.vuejs.org/#eNp9U01v00AQ/SujvbgVIVYbDihyI6CtBEh8CHJjOTj2JN52vWvtrpOgyP+dtzZOLQS9zc68N37zZnwSb5tmvm9ZLIU0WeC60XnglTREWXW1WldMQGhV5EFZk6XI9bVS7fsgwharOw650p6sodPJ8IHu0OTisutAWIy4T79ubd1YwyZQeiZf0/6l2t5I4St7WKugWYrVrTWlih/MNfU59LkeKa3+EyHWCvStdeAriCdl6EeSJ7Nkk8woKZKfaDaCI2AJfX1AXXdukmo19k7PzTNlmjbQEn4UXFldcvzI9esXV6+keNK/aUPA1G8KWPQIQGGNt5rn2u4ukoq1tnSwTpfJJZS8j+8sHTiDj2k0kgjepxPz8fSFU00gz6FteqiCdy7Q1MWtszVJMU8nybhMiV1GShSDFqOxN8Ghhi8NvVdiJoIHZqt28wdvDW7gFGlxirpRmt2XJi7BSwHfhoGlyDHD4WOfi/1mY76ouHj8R/7BH2NOiq+OPbs91J1rIXc7DkP5/vtnPiI+F2tbtvEanil+Y5jdRo0D7F1rSsie4Hq1H3rrlNmt/f0xsPHjUIMhRF2PlwLeRSP/N/qT3MV80fOk6eDiX/bDx8mf5Po9N1i+Y2yk1SVtmHIybb1hR3ZLuN+aWHMNvp8NhHivdb5jT7kpyYYK0AbvuFNMELIUVwHk9GzwFN1v4YU/Yg==
  5. https://play.vuejs.org/#eNp9U01v00AQ/SujvbgVIVYbDihyI6CtBEh8CHJjOTj2JN52vWvtrpOgyP+dtzZOLQS9zc68N37zZnwSb5tmvm9ZLIU0WeC60XnglTREWXW1WldMQGhV5EFZk6XI9bVS7fsgwharOw650p6sodPJ8IHu0OTisutAWIy4T79ubd1YwyZQeiZf0/6l2t5I4St7WKugWYrVrTWlih/MNfU59LkeKa3+EyHWCvStdeAriCdl6EeSJ7Nkk8woKZKfaDaCI2AJfX1AXXdukmo19k7PzTNlmjbQEn4UXFldcvzI9esXV6+keNK/aUPA1G8KWPQIQGGNt5rn2u4ukoq1tnSwTpfJJZS8j+8sHTiDj2k0kgjepxPz8fSFU00gz6FteqiCdy7Q1MWtszVJMU8nybhMiV1GShSDFqOxN8Ghhi8NvVdiJoIHZqt28wdvDW7gFGlxirpRmt2XJi7BSwHfhoGlyDHD4WOfi/1mY76ouHj8R/7BH2NOiq+OPbs91J1rIXc7DkP5/vtnPiI+F2tbtvEanil+Y5jdRo0D7F1rSsie4Hq1H3rrlNmt/f0xsPHjUIMhRF2PlwLeRSP/N/qT3MV80fOk6eDiX/bDx8mf5Po9N1i+Y2yk1SVtmHIybb1hR3ZLuN+aWHMNvp8NhHivdb5jT7kpyYYK0AbvuFNMELIUVwHk9GzwFN1v4YU/Yg==
  6. https://play.vuejs.org/#eNqVU1Fv2jAQ/iuWNSkgUaKqe0IBtTA0bdoKGtNe5j6k4QAXx45sh1JF+e87Xwg0W1VpiIfc3Xd3n+++q/hdUQwPJfART1xmZeGZA18WE6GFlnlhrGerAjKZqmnpvdFsY03OomHc8YYSUUjJjHYeMaX0bMwEX3mbPj+CtS+CC53ETQ+qnnjIC5V6QIuxpNtl5KVXMBacSgnObl0Tv4IDaI+BHn302XjCKhbaGgVDZbYnf43NqTD+ViYHNjPaY+DkOjdnhyunjB9tjPFg24xk93GyVJA6YG6XWmAvprRsjQycRHb4rypiVtdJjNg2Le6+qTsk8oUhnEF8wL1D7hu5HT45o3ELFYF4ZvJCKrCLwmNDJ/iIUSTEUqXM81fyeVvCoPVnO8j2b/if3DH4BF9acGAPIPg55lO7BZxvCM9X93DE73MwN+tSIfqd4A/AuZeBYwOblnqNtF/hiO0XUpLU259ufsQ1hCmeiQZkTXjBUUezd55+oXszvKE8oWuc4j9iDHq+7MLSNnbXk6oiXdHWrlt/2D+LW+uxEeBtpmS2R519gFz6XnSS3zyIKxpEnxeLT1EfJTYLMLYxln2Te0jiJv3/ik3v/q51j4xWhn0vs92bdYmyTnO6EFIupuN1oZsgr4WIJrm650116G48K6wpHJ7rGjZSwzJYvd8RTSp66Heggf8FOg8WQtv3/ArveeizhsLp1nn9B120fas=
  7. https://play.vuejs.org/#eNqVU1Fv2jAQ/iuWNSkgUaKqe0IBtTA0bdoKGtNe5j6k4QAXx45sh1JF+e87Xwg0W1VpiIfc3Xd3n+++q/hdUQwPJfART1xmZeGZA18WE6GFlnlhrGerAjKZqmnpvdFsY03OomHc8YYSUUjJjHYeMaX0bMwEX3mbPj+CtS+CC53ETQ+qnnjIC5V6QIuxpNtl5KVXMBacSgnObl0Tv4IDaI+BHn302XjCKhbaGgVDZbYnf43NqTD+ViYHNjPaY+DkOjdnhyunjB9tjPFg24xk93GyVJA6YG6XWmAvprRsjQycRHb4rypiVtdJjNg2Le6+qTsk8oUhnEF8wL1D7hu5HT45o3ELFYF4ZvJCKrCLwmNDJ/iIUSTEUqXM81fyeVvCoPVnO8j2b/if3DH4BF9acGAPIPg55lO7BZxvCM9X93DE73MwN+tSIfqd4A/AuZeBYwOblnqNtF/hiO0XUpLU259ufsQ1hCmeiQZkTXjBUUezd55+oXszvKE8oWuc4j9iDHq+7MLSNnbXk6oiXdHWrlt/2D+LW+uxEeBtpmS2R519gFz6XnSS3zyIKxpEnxeLT1EfJTYLMLYxln2Te0jiJv3/ik3v/q51j4xWhn0vs92bdYmyTnO6EFIupuN1oZsgr4WIJrm650116G48K6wpHJ7rGjZSwzJYvd8RTSp66Heggf8FOg8WQtv3/ArveeizhsLp1nn9B120fas=
  8. https://play.vuejs.org/#eNp9kU9PAjEQxb9K0wtqFCJ4IgvxDxz0oAaJp16WZYBCt23a6Yoh+92ddgOSiNzaeb/XvpnZ8Qdr21UA3ucZQmlVjjAUmrFsdTucroB95ioAk57tdsxBXqCsYJRjPlZQgkZW11mH0MbSG07AQo59JjHSSn031hPOZOw1RqltQFbdlGYOaiD4CVzwBp0FRKPZfaFksSF0bsJMwcUl6aN0zDoNQnjWOWqJrr5w0iLzgMFSRZbWOGSxrwWr2cKZkrVoFq0IF0b71MOfjgeRv2jddVuXEVwETQhF2iehB2PSE9Z2lYYZH/hHu+oKXaesnSZsCs6vOXoKtJDL9tobTcvaxS8EL0xppQL3ZmMEL3ifJSVqNH3z9ZJq6AJc7+vFCorNifrab2NN8HcHHlwFgh80zN0SaAdRHn+8wpbOB5G2FhTRZ8QJeKNCzNhgj0HPKfYRl9I+p41IvZz68RZB+31TMWgk68QLTlt6OtP6b9xeu5d8NFZe/wCjXv/t
  9. https://play.vuejs.org/#eNp9kU9PAjEQxb9K0wtqFCJ4IgvxDxz0oAaJp16WZYBCt23a6Yoh+92ddgOSiNzaeb/XvpnZ8Qdr21UA3ucZQmlVjjAUmrFsdTucroB95ioAk57tdsxBXqCsYJRjPlZQgkZW11mH0MbSG07AQo59JjHSSn031hPOZOw1RqltQFbdlGYOaiD4CVzwBp0FRKPZfaFksSF0bsJMwcUl6aN0zDoNQnjWOWqJrr5w0iLzgMFSRZbWOGSxrwWr2cKZkrVoFq0IF0b71MOfjgeRv2jddVuXEVwETQhF2iehB2PSE9Z2lYYZH/hHu+oKXaesnSZsCs6vOXoKtJDL9tobTcvaxS8EL0xppQL3ZmMEL3ifJSVqNH3z9ZJq6AJc7+vFCorNifrab2NN8HcHHlwFgh80zN0SaAdRHn+8wpbOB5G2FhTRZ8QJeKNCzNhgj0HPKfYRl9I+p41IvZz68RZB+31TMWgk68QLTlt6OtP6b9xeu5d8NFZe/wCjXv/t
  10. https://play.vuejs.org/#eNp9kU9PAjEQxb9K0wtqFCJ4IgvxDxz0oAaJp16WZYBCt23a6Yoh+92ddgOSiNzaeb/XvpnZ8Qdr21UA3ucZQmlVjjAUmrFsdTucroB95ioAk57tdsxBXqCsYJRjPlZQgkZW11mH0MbSG07AQo59JjHSSn031hPOZOw1RqltQFbdlGYOaiD4CVzwBp0FRKPZfaFksSF0bsJMwcUl6aN0zDoNQnjWOWqJrr5w0iLzgMFSRZbWOGSxrwWr2cKZkrVoFq0IF0b71MOfjgeRv2jddVuXEVwETQhF2iehB2PSE9Z2lYYZH/hHu+oKXaesnSZsCs6vOXoKtJDL9tobTcvaxS8EL0xppQL3ZmMEL3ifJSVqNH3z9ZJq6AJc7+vFCorNifrab2NN8HcHHlwFgh80zN0SaAdRHn+8wpbOB5G2FhTRZ8QJeKNCzNhgj0HPKfYRl9I+p41IvZz68RZB+31TMWgk68QLTlt6OtP6b9xeu5d8NFZe/wCjXv/t
  11. https://play.vuejs.org/#eNp9kU9PAjEQxb9K0wtqFCJ4IgvxDxz0oAaJp16WZYBCt23a6Yoh+92ddgOSiNzaeb/XvpnZ8Qdr21UA3ucZQmlVjjAUmrFsdTucroB95ioAk57tdsxBXqCsYJRjPlZQgkZW11mH0MbSG07AQo59JjHSSn031hPOZOw1RqltQFbdlGYOaiD4CVzwBp0FRKPZfaFksSF0bsJMwcUl6aN0zDoNQnjWOWqJrr5w0iLzgMFSRZbWOGSxrwWr2cKZkrVoFq0IF0b71MOfjgeRv2jddVuXEVwETQhF2iehB2PSE9Z2lYYZH/hHu+oKXaesnSZsCs6vOXoKtJDL9tobTcvaxS8EL0xppQL3ZmMEL3ifJSVqNH3z9ZJq6AJc7+vFCorNifrab2NN8HcHHlwFgh80zN0SaAdRHn+8wpbOB5G2FhTRZ8QJeKNCzNhgj0HPKfYRl9I+p41IvZz68RZB+31TMWgk68QLTlt6OtP6b9xeu5d8NFZe/wCjXv/t
  12. https://play.vuejs.org/#eNrVU01P4zAQ/SuzvrArsa0QtyqgBYS0cABEe/QlTSapwfFY9qQtqvrfGTviswghbtyceW9ent+MN+rE+9GyRzVRBWPnbcl4rJ12AFNkNq6Fa4cTKIzzPQM/eDzSqlpgdT+ntVaw/NtRjVaKAcuKzRJn1LYWtRKZF5HZir4v8jP6htSKec9MDv5V1lT3O0w4Ag59ajixVqItxgP/GL7W/Gvnx9OV4WoBIvdOa3Egfk3zkdkzcrVhQ6608B/LGkMxXhzIHYrxmyUoYhWMZ4jIvZeK6TwFhg0EbGALTaAO9mR79hK5IhdZkHeOhfq7KW3EP1lxPEhmebWvOEpbY9rRXSQnS7hJ1iVz6ryxGK59chm1mkBGElZaS6vLXEtR7j/V85w+qN9FGd1EDjcBI4alBPCMcRla5AE+n17hWs7PoMy6T3F9At5iJNsnjwPttHe12H7Fy24vcm7yDmbxfM3o4tOl8i4Ic5v5WkmWZ59c/cXu4egw92m3lRRTz+4rDtqdEs4Ja6Sa6vT9ar5q+whQkF+a
  13. https://play.vuejs.org/#eNp9kU9PAjEQxb9K0wtqFCJ4IgvxDxz0oAaJp16WZYBCt23a6Yoh+92ddgOSiNzaeb/XvpnZ8Qdr21UA3ucZQmlVjjAUmrFsdTucroB95ioAk57tdsxBXqCsYJRjPlZQgkZW11mH0MbSG07AQo59JjHSSn031hPOZOw1RqltQFbdlGYOaiD4CVzwBp0FRKPZfaFksSF0bsJMwcUl6aN0zDoNQnjWOWqJrr5w0iLzgMFSRZbWOGSxrwWr2cKZkrVoFq0IF0b71MOfjgeRv2jddVuXEVwETQhF2iehB2PSE9Z2lYYZH/hHu+oKXaesnSZsCs6vOXoKtJDL9tobTcvaxS8EL0xppQL3ZmMEL3ifJSVqNH3z9ZJq6AJc7+vFCorNifrab2NN8HcHHlwFgh80zN0SaAdRHn+8wpbOB5G2FhTRZ8QJeKNCzNhgj0HPKfYRl9I+p41IvZz68RZB+31TMWgk68QLTlt6OtP6b9xeu5d8NFZe/wCjXv/t
  14. https://play.vuejs.org/#eNp9Ustu2zAQ/JUFUcB24cpo3JMhG33Eh/bQFmnQkw5h6LXEhCIJkZQdCPr3LqkqCRAlN3J3Zjkz3I59sTZrA7INyz3WVnGPu0ID5NXH3XWF8JergCAddB00yIWXLV5yz/cKa9Qe+j5fEXSgrHdXaJH7DUgf0Uo9DNQJZiKuB6LUNnhoP9TmgGpbsAl4wQbobfDeaPgslBT3BD2YcKtwvqD+ZTrmqwFC8Hz1zBJdnWik9eDQB0sVWVvTeIi+jks4cS+qHo6NqWFGicwiRRjtkpMXvreRNZ99upgtIvAYNEFI2KiHxka9E9SsTZHGAa/03l8Uuo9Tk6b5BG4J3D1oAXONp/RDSzDqkE4L2O6gi29DVG8UZsqU8xtRcV1KXQ4O33Ujvgdv6DoO6m+ADPXJVL4aEkvpsSXzjiYeZZndOaNpY9IrBROmtlJh88vGBFzBNv/fpx6tgDn9SDXfkMyxLioU9xP1O3eOtYL9btBh02LBHnueNyXSIsT2/s9PPNP5sUmrExSh32heIaURosYB9jXoA8l+hktqv6e1oKSu3f7sUbvRVBQakX3CF4yW5Nsb1p/krrN14lGurP8HkecvyA==
  15. https://play.vuejs.org/#eNp9Ustu2zAQ/JUFUcB24cpo3JMhG33Eh/bQFmnQkw5h6LXEhCIJkZQdCPr3LqkqCRAlN3J3Zjkz3I59sTZrA7INyz3WVnGPu0ID5NXH3XWF8JergCAddB00yIWXLV5yz/cKa9Qe+j5fEXSgrHdXaJH7DUgf0Uo9DNQJZiKuB6LUNnhoP9TmgGpbsAl4wQbobfDeaPgslBT3BD2YcKtwvqD+ZTrmqwFC8Hz1zBJdnWik9eDQB0sVWVvTeIi+jks4cS+qHo6NqWFGicwiRRjtkpMXvreRNZ99upgtIvAYNEFI2KiHxka9E9SsTZHGAa/03l8Uuo9Tk6b5BG4J3D1oAXONp/RDSzDqkE4L2O6gi29DVG8UZsqU8xtRcV1KXQ4O33Ujvgdv6DoO6m+ADPXJVL4aEkvpsSXzjiYeZZndOaNpY9IrBROmtlJh88vGBFzBNv/fpx6tgDn9SDXfkMyxLioU9xP1O3eOtYL9btBh02LBHnueNyXSIsT2/s9PPNP5sUmrExSh32heIaURosYB9jXoA8l+hktqv6e1oKSu3f7sUbvRVBQakX3CF4yW5Nsb1p/krrN14lGurP8HkecvyA==
  16. Vue SFC Playground https://play.vuejs.org/ Vue & Vite in StackBlitz - https://vite.new/vue Vite & Vue – e.g. in Gitpod.io – npm create vue@latest then add VS Code extension Volar https://gitpod.io/#https://github.com/lucasjellema/vue3-gitpod-starter Chrome Extension Firefox Addon Edge Extension Standalone Electron app
  17. https://blog.logrocket.com/complex-vue-3-state-management-pinia/
  18. https://blog.logrocket.com/complex-vue-3-state-management-pinia/ stackblitz.com/edit/vitejs-vite-9jwcjw?file=src%2Fcomponents%2FHelloWorld.vue
  19. https://blog.logrocket.com/complex-vue-3-state-management-pinia/ stackblitz.com/edit/vitejs-vite-9jwcjw?file=src%2Fcomponents%2FHelloWorld.vue
  20. stackblitz.com/edit/vitejs-vite-9jwcjw?file=src%2Fcomponents%2FHelloWorld.vue
  21. https://lucasjellema.github.io/code-cafe-vue3-people-application/