Vue 3 is the latest version of the easy to use Vue JavaScript framework that lets us create front end apps.
In this article, we’ll look at how to create a quote of the day app with Vue 3 and JavaScript.
Create the Project
We can create the Vue project with Vue CLI.
To install it, we run:
npm install -g @vue/cli
with NPM or:
yarn global add @vue/cli
with Yarn.
Then we run:
vue create quote-of-the-day-app
and select all the default options to create the project.
Create the Quote of the Day App
We can create our quote of the day app by writing:
<template>
<button @click="getRandomQuote">get quote</button>
<p>{{ quoteOfTheDay }}</p>
</template>
<script>
export default {
name: "App",
data() {
return {
quotes: [],
quoteOfTheDay: "",
};
},
methods: {
async getQuotes() {
const res = await fetch(`https://type.fit/api/quotes`);
const quotes = await res.json();
this.quotes = quotes;
},
getRandomQuote() {
const index = Math.floor(Math.random() * this.quotes.length);
const quoteOfTheDay = this.quotes[index];
this.quoteOfTheDay = quoteOfTheDay.text;
},
},
async beforeMount() {
await this.getQuotes();
this.getRandomQuote();
},
};
</script>
In the component object, we have the data method to return an object with the quotes and qyoteOfTheDay reactive properties.
quotes have an array of quotes.
quoteOfTheDay has the quote picked randomly from the quotes array.
In the methods property, we have the getQuotes method that calls fetch to get the quotes from the URL.
Then we call res.json() to get the JSON from the response.
Each line returns a promise, so we need to add await to wait for each line to return the result.
And then we assign the quotes JSON array to thre this.quotes reactive property.
getRandomQuotes randomly generates the index of the quotes array.
Then we set the quoteOfTheDay to get the route.
And then we can the text property to get the quote text.
In the beforeMount hook, we run the getQuotes method and getRandomQuote method to get the quote.
beforeMount is run when the component mounts, so we’ll get the quotes when the component loads.
In the template, we have a button to get the quote with getRandomQuote and we display the result in the p element.
Conclusion
We can create a quote of the day app easily with Vue 3 and JavaScript.