In Vue 3, this concept is expressed using the createApp() function — it’s how you initialize and mount your application.
🧩 What is the Vue Instance (App)?
A Vue instance (or app) is the root of your Vue project.
It’s the object that:
- Holds your app’s data, methods, and components.
 - Controls what gets rendered to the DOM.
 - Provides the base configuration for the entire Vue app.
 
⚙️ Creating a Vue App (Vue 3)
🧱 Example: main.js
This is your entry point.
// src/main.js
import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app')
🔍 Explanation
createApp(App)→ creates a new Vue app instance using your root component (App.vue)..mount('#app')→ tells Vue where in the DOM to display the app (the element with idappinindex.html).
🧱 index.html
This is the HTML “container” that Vue will take over.
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>My Vue App</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.js"></script>
  </body>
</html>
Here, the #app div is where your Vue app will render.
🧱 App.vue
Your root component:
<template>
  <h1>{{ message }}</h1>
  <button @click="changeMessage">Click me</button>
</template>
<script setup>
import { ref } from 'vue'
const message = ref('Hello from Vue App!')
function changeMessage() {
  message.value = 'You clicked the button!'
}
</script>
<style scoped>
h1 {
  color: #42b883;
}
</style>
🧠 How It Works
- Vue takes the HTML structure in 
<template>. - It creates a reactive connection between the data (
ref) and the DOM. - Any time your data changes, Vue automatically updates the DOM.
 
🧩 Adding Global Configurations (Optional)
You can extend your app instance before mounting it:
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import { createPinia } from 'pinia'
const app = createApp(App)
app.use(router)
app.use(createPinia())
app.mount('#app')
This is how you integrate tools like:
- Vue Router
 - Pinia
 - Global components
 - Plugins
 
🧠 Summary
| Concept | Description | 
|---|---|
createApp() | Creates the Vue app instance | 
.mount('#app') | Mounts the app into the DOM | 
App.vue | Root component of your app | 
ref(), reactive() | Make data reactive | 
app.use() | Add plugins or global features | 
