Book Image

Vue.js 3 By Example

By : John Au-Yeung
Book Image

Vue.js 3 By Example

By: John Au-Yeung

Overview of this book

With its huge ecosystem and wide adoption, Vue is one of the leading frameworks thanks to its ease of use when developing applications. However, it can get challenging for aspiring Vue.js developers to make sense of the ecosystem and build meaningful applications. This book will help you understand how you can leverage Vue effectively to develop impressive apps quickly using its latest version – Vue 3.0. The book takes an example-based approach to help you get to grips with the basics of Vue 3 and create a simple application by exploring features such as components and directives. You'll then enhance your app building skills by learning how to test the app with Jest and Vue Test Utils. As you advance, you'll understand how to write non-web apps with Vue 3, create cross-platform desktop apps with the Electron plugin, and build a multi-purpose mobile app with Vue and Ionic. You'll also be able to develop web apps with Vue 3 that interact well with GraphQL APIs. Finally, you'll build a chat app that performs real-time communication using Vue 3 and Laravel. By the end of this Vue.js book, you'll have developed the skills you need to build real-world apps using Vue 3 by working through a range of projects.
Table of Contents (10 chapters)

Adding a photo submission UI

To build the app, we will first add our components and the file to store the constants that we will need throughout the app. To start with, we get rid of the components/HelloWorld.vue file. Then, we remove any references of it in the App.vue file, including the import and components properties to unregister the component. Now we will add some new components to our app.

First, we add the PhotoFormPage.vue component file to the src/components folder. Inside the file, we add the following template:

  <div class="form">
    <h1>{{ $ ? "Edit" : "Add" }} Photo</h1>
    <form @submit.prevent="submit">
        <label for="name">Name</label>
        <br />