Top Vue Packages for Adding Walkthroughs, Making HTTP Requests, and Validating Forms
By: John Au-Yeung
Tags: JavaScript, Programming, Web Development, Technology, Software Development

Photo by Jack Young on Unsplash

Vue.js is an easy to use web app framework that we can use to develop interactive front end apps.

In this article, we’ll look at how the best packages for adding walkthroughs, making HTTP requests, and validating forms.

vue-tour

We can use vue-tour to create walkthroughs for our app.

To use it, we write:

npm i vue-tour

Then we can register the components by writing:

import Vue from "vue";

import App from "./App.vue";

import VueTour from "vue-tour"; require("vue-tour/dist/vue-tour.css");

Vue.use(VueTour); Vue.config.productionTip = false; new Vue({

render: h => h(App)

}).$mount("#app");

We also imported the styles.

Then we can use it by writing:

<template>

<div>

<div id="v-step-0">step 0.</div>

<div class="v-step-1">step 1</div>

<div data-v-step="2">step 2</div>

<v-tour name="myTour" :steps="steps"></v-tour>

</div>

</template>



<script>

export default {

data() {

return {

steps: [

{

target: "#v-step-0",

header: {

title: "get started"

},

content: `hello <strong>world</strong>!`

},

{

target: ".v-step-1",

content: "step 1"

},

{

target: '[data-v-step="2"]',

content: "Step 2",

params: {

placement: "top"

}

}

]

};

},

mounted() {

this.$tours["myTour"].start();

}

};

</script>

We have the list of steps in the template.

Then we have the steps array with the steps that target the elements that are on the page.

This way, the steps are displayed near the target element.

In each step, we can set the header, content, and placement of the steps.

Then to start the tour, we use the start method at the bottom of the page as we did.

vue-resource

vue-resource is an HTTP client that’s made as a Vue plugin.

To install it, we run:

npm i vue-resource

Then we can use it by writing:

import Vue from "vue";

import App from "./App.vue";

const VueResource = require("vue-resource"); Vue.use(VueResource); Vue.config.productionTip = false; new Vue({

render: h => h(App)

}).$mount("#app");

to register the plugin.

Now we have access to the $http property in our component:

<template>

<div>{{data.name}}</div>

</template>



<script>

export default {

data() {

return {

data: {}

};

},

async mounted() {

const { body } = await this.$http.get("https://api.agify.io/?name=michael");

this.data = body;

}

};

</script>

It’s promised based so we can use async and await.

We can set common options that are used throughout the app by writing:

Vue.http.options.root = '/root';

Vue.http.headers.common['Authorization'] = 'Basic YXBpOnBhc3N3b3Jk';

We set the root URL for all requests and the Authorization header that’s used everywhere.

vue-form

vue-form is a form validation library for Vue apps.

We can use it by installing the package:

npm i vue-form

Then we can use it by writing:

main.js

import Vue from "vue";

import App from "./App.vue";

import VueForm from "vue-form"; Vue.use(VueForm); Vue.config.productionTip = false; new Vue({

render: h => h(App)

}).$mount("#app");

App.vue



<div>

<vue-form :state="formState"

<validate tag="label">

<span>Name *</span>

<input v-model="model.name" required name="name"> @submit .prevent="onSubmit"> Name * <field-messages name="name">

<div>Success!</div>

<div slot="required">name is required</div>

</field-messages>

</validate>

</vue-form>

</div>

</template>



<script>

export default {

data() {

return {

model: {

name: ""

},

formState: {}

};

},

methods: {

onSubmit() {

if (this.formState.$invalid) {

return;

}

}

}

};

</script>

We registered the component in main.js .

Then in the component, we used the vue-form component.

The state prop is set to the formState object, which will be updated when the form state change.

submit.prevent has the submit handler with e.preventDefault called on it.

v-model binds to the model.

The field-messages component displays the form validation messages.

required indicates that it’s required.

In the onSubmit method, we check the formState.$invalid to check whether the form is invalid.

If it’s invalid, we don’t proceed with submission.

Other form state properties include $name with the name attribute value of the field.

$valid to see if the form or field is valid.

$focused to check that the form or field is focused.

$dirty to see if the form or field has been manipulated.

It also comes with other validators like email, URL, number, min and max length, and more.

Photo by Heather Lo on Unsplash

Conclusion

We can add a walkthrough tour to our Vue app with the vue-tour package.

vue-resource is a promise-based HTTP client that’s made for Vue apps.

vue-form is a useful form validation plugin for Vue apps.

JavaScript In Plain English

Did you know that we have four publications and a YouTube channel? Find them all at plainenglish.io and subscribe to our YouTube channel!