# Что выполняется первым main.ts или app.vue

Коротко:  
👉 **первым выполняется `main.ts`**, а уже потом — `App.vue`.

---

## Порядок выполнения во Vue

### 1️⃣ `main.ts` — **точка входа**

Это **самый первый файл**, с которого стартует приложение.

Пример:

```ts
import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

```

Что здесь происходит:

- создаётся Vue-приложение
- подключаются плагины (router, store и т.д.)
- приложение **монтируется**
- Vue говорит: «рендерим `App.vue`»

---

### 2️⃣ `App.vue` — **корневой компонент**

`App.vue` начинает выполняться **после `mount()`**.

```vue
<script setup>
console.log('App.vue')
</script>

```

---

## Если смотреть по жизненному циклу

Пример логов:

```ts
// main.ts
console.log('main.ts')

createApp(App).mount('#app')

```

```vue
<script setup>
console.log('App.vue setup')
</script>

```

📌 В консоли будет:

```
main.ts
App.vue setup

```

---

## Важно понимать

- `main.ts` **не имеет жизненного цикла**
- `App.vue` — обычный Vue-компонент:
    
    
    - `setup`
    - `onBeforeMount`
    - `onMounted`
    - и т.д.

---

## Частые случаи

### 🔹 Где что писать

<table id="bkmrk-%D0%A7%D1%82%D0%BE-%D0%BD%D1%83%D0%B6%D0%BD%D0%BE-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D0%93%D0%B4"><thead><tr><th>Что нужно сделать</th><th>Где</th></tr></thead><tbody><tr><td>Подключить router</td><td>`main.ts`</td></tr><tr><td>Подключить pinia</td><td>`main.ts`</td></tr><tr><td>Глобальные стили</td><td>`main.ts`</td></tr><tr><td>Логика UI</td><td>`App.vue`</td></tr><tr><td>`<router-view />`</td><td>`App.vue`</td></tr></tbody></table>

---

### 🔹 В Nuxt

Там **нет `main.ts`**:

- Nuxt сам управляет инициализацией
- `app.vue` — корневой компонент
- плагины — в `plugins/`