# O aplicativo montado não substitui o elemento
breaking
# Visão Geral
No Vue 2.x, ao montar uma aplicação que tem um template
, o conteúdo renderizado substitui o elemento em que montamos. No Vue 3.x, o aplicativo renderizado é anexado como filho de tal elemento, substituindo o innerHTML
do elemento.
# Sintaxe v2.x
No Vue 2.x, passamos um seletor de elemento HTML para new Vue()
ou $mount
:
new Vue({
el: '#app',
data() {
return {
message: 'Olá Vue!'
}
},
template: `
<div id="rendered">{{ message }}</div>
`
})
// ou
const app = new Vue({
data() {
return {
message: 'Olá Vue!'
}
},
template: `
<div id="rendered">{{ message }}</div>
`
})
app.$mount('#app')
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Quando montamos esta aplicação na página que tem um div
com o seletor passado (no nosso caso, é id="app"
):
<body>
<div id="app">
Algum conteúdo de aplicativo
</div>
</body>
2
3
4
5
no resultado renderizado, o div
mencionado será substituído pelo conteúdo do aplicativo renderizado:
<body>
<div id="rendered">Olá Vue!</div>
</body>
2
3
# Sintaxe v3.x
No Vue 3.x, quando montamos uma aplicação, seu conteúdo renderizado substituirá o innerHTML
do elemento que passamos para mount
:
const app = Vue.createApp({
data() {
return {
message: 'Olá Vue!'
}
},
template: `
<div id="rendered">{{ message }}</div>
`
})
app.mount('#app')
2
3
4
5
6
7
8
9
10
11
12
Quando este aplicativo é montado na página que tem um div
com id="app"
, isso resultará em:
<body>
<div id="app" data-v-app="">
<div id="rendered">Olá Vue!</div>
</div>
</body>
2
3
4
5
# Estratégia de Migração
Sinalizador na compilação de migração: GLOBAL_MOUNT_CONTAINER