做(zuò)自(zì)由與創造的先行(xíng)者

創建一(yī)個 Vue 應用

Vue.js中文手冊

應用實例 ​

每個 Vue 應用都(dōu)是通(tōng)過 createApp 函數(shù)創建一(yī)個新的 應用實例:

js

import { createApp } from 'vue'

const app = createApp({

/* 根組件選項 */

})

根組件 ​

我們傳入 createApp 的對象實際上(shàng)是一(yī)個組件,每個應用都(dōu)需要(yào)一(yī)個“根組件”,其他(tā)組件将作(zuò)為(wèi)其子組件。

如(rú)果你使用的是單文件組件,我們可(kě)以直接從(cóng)另一(yī)個文件中導入根組件。

js

import { createApp } from 'vue'

// 從(cóng)一(yī)個單文件組件中導入根組件

import App from './App.vue'

const app = createApp(App)

雖然本指南中的許多示例隻需要(yào)一(yī)個組件,但(dàn)大多數(shù)真實的應用都(dōu)是由一(yī)棵嵌套的、可(kě)重用的組件樹(shù)組成的。例如(rú),一(yī)個待辦事項 (Todos) 應用的組件樹(shù)可(kě)能(néng)是這(zhè)樣的:

App (root component)

├─ TodoList

│ └─ TodoItem

│ ├─ TodoDeleteButton

│ └─ TodoEditButton

└─ TodoFooter

├─ TodoClearButton

└─ TodoStatistics

我們會在指南的後續章(zhāng)節中讨論如(rú)何定義和(hé)組合多個組件。在那(nà)之前,我們得先關注一(yī)個組件內(nèi)到底發生了(le)什麽。

挂載應用 ​

應用實例必須在調用了(le) .mount() 方法後才會渲染出來。該方法接收一(yī)個“容器”參數(shù),可(kě)以是一(yī)個實際的 DOM 元素或是一(yī)個 CSS 選擇器字符串:

html

<div id="app"></div>

js

app.mount('#app')

應用根組件的內(nèi)容将會被渲染在容器元素裏面。容器元素自(zì)己将不會被視(shì)為(wèi)應用的一(yī)部分。

.mount() 方法應該始終在整個應用配置和(hé)資源注冊完成後被調用。同時(shí)請(qǐng)注意,不同于其他(tā)資源注冊方法,它的返回值是根組件實例而非應用實例。

DOM 中的根組件模闆 ​

當在未采用構建流程的情況下(xià)使用 Vue 時(shí),我們可(kě)以在挂載容器中直接書(shū)寫根組件模闆:

html

<div id="app">

<button @click="count++">{{ count }}</button>

</div>

js

import { createApp } from 'vue'

const app = createApp({

data() {

return {

count: 0

}

}

})

app.mount('#app')

當根組件沒有設置 template 選項時(shí),Vue 将自(zì)動使用容器的 innerHTML 作(zuò)為(wèi)模闆。

應用配置 ​

應用實例會暴露一(yī)個 .config 對象允許我們配置一(yī)些應用級的選項,例如(rú)定義一(yī)個應用級的錯誤處理器,用來捕獲所有子組件上(shàng)的錯誤:

js

app.config.errorHandler = (err) => {

/* 處理錯誤 */

}

應用實例還提供了(le)一(yī)些方法來注冊應用範圍內(nèi)可(kě)用的資源,例如(rú)注冊一(yī)個組件:

js

app.component('TodoDeleteButton', TodoDeleteButton)

這(zhè)使得 TodoDeleteButton 在應用的任何地(dì)方都(dōu)是可(kě)用的。我們會在指南的後續章(zhāng)節中讨論關于組件和(hé)其他(tā)資源的注冊。你也可(kě)以在 API 參考中浏覽應用實例 API 的完整列表。

确保在挂載應用實例之前完成所有應用配置!

多個應用實例 ​

應用實例并不隻限于一(yī)個。createApp API 允許你在同一(yī)個頁面中創建多個共存的 Vue 應用,而且每個應用都(dōu)擁有自(zì)己的用于配置和(hé)全局資源的作(zuò)用域。

js

const app1 = createApp({

/* ... */

})

app1.mount('#container-1')

const app2 = createApp({

/* ... */

})

app2.mount('#container-2')

如(rú)果你正在使用 Vue 來增強服務端渲染 HTML,并且隻想要(yào) Vue 去控制一(yī)個大型頁面中特殊的一(yī)小部分,應避免将一(yī)個單獨的 Vue 應用實例挂載到整個頁面上(shàng),而是應該創建多個小的應用實例,将它們分别挂載到所需的元素上(shàng)去。

網站建設開(kāi)發|APP設計開(kāi)發|小程序建設開(kāi)發
下(xià)一(yī)篇:模闆語法
上(shàng)一(yī)篇:什麽是 Vue?