VueJS Tutorial – Vue Crash Course 2023 including Composition API & Pinia

Posted by


In this VueJS tutorial, we will cover the basics of Vue.js as well as introduce the new Vue 3 Composition API and the Pinia state management library. We will walk through setting up a new Vue project, building a simple application, and using the Composition API to manage our application’s state.

What is VueJS?

Vue.js is a progressive JavaScript framework for building user interfaces. It is focused on the view layer of your application and is designed to be simple, flexible, and performant. Vue allows you to build reactive, component-based applications that are easy to maintain and scale.

Setting up a Vue project

To get started with Vue, you will need to have Node.js and npm (Node Package Manager) installed on your machine. You can install Vue CLI, which is a command-line tool for scaffolding new Vue projects, using the following command:

npm install -g @vue/cli

Once Vue CLI is installed, you can create a new Vue project by running:

vue create my-project

Follow the prompts to set up your project. You can choose to use Vue 3 and the Composition API when setting up your project.

Creating a simple Vue application

Now that we have our Vue project set up, let’s create a simple application that displays a list of items.

In your project directory, create a new component called ItemList.vue and add the following code:

<template>
  <div>
    <h1>Item List</h1>
    <ul>
      <li v-for="item in items" :key="item.id">{{ item.name }}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' },
        { id: 3, name: 'Item 3' }
      ]
    };
  }
};
</script>

Now, import and use the ItemList component in your App.vue file:

<template>
  <div>
    <ItemList />
  </div>
</template>

<script>
import ItemList from './components/ItemList.vue';

export default {
  components: {
    ItemList
  }
};
</script>

You should see a list of items displayed in your application.

Using the Composition API

The Composition API is a new way of organizing and reusing code in Vue 3. It allows you to define your component’s logic in a more granular and composable way. Let’s refactor our ItemList.vue component using the Composition API.

<script>
import { ref } from 'vue';

export default {
  setup() {
    const items = ref([
      { id: 1, name: 'Item 1' },
      { id: 2, name: 'Item 2' },
      { id: 3, name: 'Item 3' }
    ]);

    return {
      items
    };
  }
};
</script>

In the above code, we are using the setup function to define our component’s logic. We are using the ref function from Vue to define a reactive reference to our items array.

Using Pinia for state management

Pinia is a new state management library for Vue 3 that is designed to work seamlessly with the Composition API. It provides a simple and reactive way to manage your application’s state.

To use Pinia, install it using the following command:

npm install pinia

Create a new store called itemStore.js in your store directory and add the following code:

import { defineStore } from 'pinia';

export const useItemStore = defineStore({
  id: 'items',
  state: () => ({
    items: [
      { id: 1, name: 'Item 1' },
      { id: 2, name: 'Item 2' },
      { id: 3, name: 'Item 3' }
    ]
  })
});

Now, import and use the useItemStore store in your ItemList.vue component:

<script>
import { useItemStore } from '@/store/itemStore';

export default {
  setup() {
    const itemStore = useItemStore();

    return {
      items: itemStore.items
    };
  }
};
</script>

In this code, we are importing and using the useItemStore function to create an instance of our store in the ItemList.vue component.

Conclusion

In this tutorial, we covered the basics of Vue.js, introduced the new Vue 3 Composition API, and used the Pinia state management library to manage our application’s state. By following these steps, you should now have a solid understanding of how to build Vue applications using modern Vue features. Happy coding!

0 0 votes
Article Rating

Leave a Reply

13 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@PK-eg2nz
2 days ago

Geniales Video, bis jetzt das beste Tutorial das ich gesehen habe! Würde mich über einen gesamten Vue.js Course von dir freuen, gerne auch bezahlt. LG

@tronichd8419
2 days ago

Sehr schönes Tutorial, danke 🙂

Mir hat die Ambiente von dem Video mit der Musik und deiner Erklärung sehr gefallen
Aber mir hätte ein "echtes" Beispiel wie ein Shop mehr gefallen. So merke ich es mir zumindest gleich viel einfacher, weil alles nachvollziehbarer ist.

Trotzdem sehr gut

@reslan9941
2 days ago

Danke dir

@crust9603
2 days ago

Beschäftige mich gerade mit einem kleinen Sideprojekt um etwas in die Webentwicklung einzutauchen (komm eigentlich aus dem Embedded-Systems Bereich). Wollte dir nur auch mal ein Lob da lassen. Das Video bringt verschiedene Aspekte von Vue einfach und mit einem Beispiel auf den Punkt. Man kann selbstständig zu den Punkten springen die man sich anschauen möchte. Optimal um einen Einstieg zu bekommen.

@generalrodcocker1018
2 days ago

warum verwendest du diesmal vite und die composition api? die options api ist eigentlich besser für anfänger zu verstehen. ansonsten keine einwände

@AlexanderSchaffer72
2 days ago

auch für "too old" 😉 perfekt gemacht

@fumano2679
2 days ago

Kurze Frage, nutzt du persönlich lieber JavaScript als TypeScript (ich weis wegen tutorial lieber basics). Ich find es viel angenehmer mit TypeScript, gerade wenn ein Projekt wächst.

@saladin_code
2 days ago

Noch mal ein großes Lob für dieses Tutorial :D. Mit dir bin ich immer uptodate. Freue mich auf mehr Content von dir.
Kleines Feedback: Hintergrundsmusik weglassen, so kann man dir viel besser Folgen.
#BesterMann

@Saschaszojak
2 days ago

richtig gut danke

@badmax7319
2 days ago

Hat VUE Vorteile gegenüber Svelte?

@martinesche6749
2 days ago

Sehr gutes Tutorial, vielen Dank! Allerdings: Warum quälst du uns über eine Stunde lang mit dem Hintergrundgedudel?

@kilianendres7976
2 days ago

Freue mich schon sehr diesen Kurs zu starten, damit ich auch webdevelopment zu einer meiner Fähigkeiten wird. Vielen Dank fürs bereitstellen!

@-elektrostahl_1338
2 days ago

Kompliment und großen Dank für dieses wirklich gelungene Tutorial !!!

13
0
Would love your thoughts, please comment.x
()
x