← 回筆記列表
前端

Creating a Vue Application

import { createApp } from 'vue'

  • Vue

每個 Vue Application都是 createApp 函数创建

import { createApp } from 'vue'

const app = createApp({
  /* root component options */
})

每個應用都需要根組件

import { createApp } from 'vue'
// import the root component App from a single-file component.
import App from './App.vue'

const app = createApp(App)

掛載 Application

Application只有在調用.mount()方法后才会渲染任何内容

app.mount('#app')

Container 不屬於 Vue Application 的一部分

Vue 的魔法(如綁定變數、監聽點擊),對這個最外層的 HTML 標籤是完全無效的

  1. 渲染前(你的專案檔案)

index.html (這是 Container 容器)

<!-- Vue 管不到這裡!如果你在這裡寫 Vue 的語法,瀏覽器會看不懂 --> 
<div id="app" {{ msg }} @click="doSomething"></div>

App.vue (這是 Root Component 根元件)

<template>
  <!-- Vue 只管得到這裡面 -->
  <h1>我是 App.vue 裡面的標題</h1>
</template>
  1. 渲染後(瀏覽器最終看到的樣子)
<div id="app"> 
    <!-- 從這裡開始,才是 Vue 真正有掌控權的「應用程式內部」 --> 
    <h1>我是 App.vue 裡面的標題</h1> 
</div>

========

mount()是最後的啟動開關

.mount() 方法應該始終在所有應用程式配置和資源註冊完成後呼叫,一旦呼叫了 .mount(),Vue 就會開始解析畫面並渲染到瀏覽器上。

  • 路由設定 (Vue Router)
  • 狀態管理 (Pinia)
  • 全域共用的 UI 元件 (如你提到的 TodoDeleteButton)

以上都需要在 .mount()之前完成。

========

回傳值的本質不同 (實體 vs 元件)

  • createApp() 回傳的是「應用程式實體 (Application Instance)」
  • .mount() 回傳的是「根元件實體 (Component Instance)」

App Configurations

它設定的是 Vue 框架本身的底層行為

當你寫下 const app = createApp(App)的時候,會提供一個app.config調整全域的系統機制。

最常見的只有這幾個:

  • 全域錯誤處理 (app.config.errorHandler)
  • 全域變數 (app.config.globalProperties)

Multiple Application Instances

createApp API 允許多個 Vue 應用程式共存於相同頁面

const app1 = createApp({
  /* ... */
})
app1.mount('#container-1')

const app2 = createApp({
  /* ... */
})
app2.mount('#container-2')
  • 是在解決舊有系統翻新混合架構的真實開發痛點