# API da Aplicação
No Vue 3, APIs que modificam globalmente o comportamento do Vue foram movidas para instâncias da aplicação, criadas pelo novo método createApp
. Além disso, seus efeitos agora têm como escopo a instância dessa aplicação específica:
import { createApp } from 'vue'
const app = createApp({})
2
3
Chamar createApp
retorna uma instância da aplicação. Esta instância fornece um contexto da aplicação. Toda a árvore de componentes montada pela instância da aplicação compartilha o mesmo contexto, fornecendo as configurações que eram "globais" anteriormente no Vue 2.x.
Além disso, uma vez que o método createApp
retorna a própria instância da aplicação, você pode encadear outros métodos após ele, que podem ser encontrados nas seções seguintes.
# component
Argumentos:
{string} name
{Function | Object} definition (opcional)
Retorna:
- A instância da aplicação se o argumento
definition
é passado - A definição do componente se o argumento
definition
não é passado
- A instância da aplicação se o argumento
Uso:
Registrar ou recuperar um componente global. O registro também atribui automaticamente o
name
do componente com o parâmetroname
fornecido.Exemplo:
import { createApp } from 'vue'
const app = createApp({})
// registrar um objeto de opções
app.component('my-component', {
/* ... */
})
// recuperar um componente registrado
const MyComponent = app.component('my-component')
2
3
4
5
6
7
8
9
10
11
- Ver também: Componentes
# config
- Uso:
Um objeto contendo configurações da aplicação.
- Exemplo:
import { createApp } from 'vue'
const app = createApp({})
app.config = {...}
2
3
4
- Ver também: Configuração da Aplicação
# directive
Argumentos:
{string} name
{Function | Object} definition (opcional)
Retorna:
- A instância da aplicação se o argumento
definition
é passado - A definição da diretiva se o argumento
definition
não é passado
- A instância da aplicação se o argumento
Uso:
Registrar ou recuperar uma diretiva global.
Exemplo:
import { createApp } from 'vue'
const app = createApp({})
// registro
app.directive('my-directive', {
// A diretiva tem um conjunto de gatilhos de ciclo de vida:
// chamado antes que os atributos do elemento vinculado (bound) ou escutas de evento sejam aplicados
created() {},
// chamado antes que o componente pai do elemento vinculado seja montado
beforeMount() {},
// chamado quando o componente pai do elemento vinculado é montado
mounted() {},
// chamado antes que o VNode do componente contido seja atualizado
beforeUpdate() {},
// chamado depois que o VNode do componente contido e de seus filhos
// tenha atualizado
updated() {},
// chamado antes que o componente pai do elemento vinculado seja desmontado
beforeUnmount() {},
// chamado quando o componente pai do elemento vinculado é desmontado
unmounted() {}
})
// registro (diretiva de função)
app.directive('my-directive', () => {
// isso será chamado como `mounted` e `updated`
})
// getter, retorna a definição da diretiva se registrada
const myDirective = app.directive('my-directive')
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Os gatilhos de diretiva recebem estes argumentos:
# el
O elemento ao qual a diretiva está vinculada. Pode ser usado para manipular diretamente o DOM.
# binding
Um objeto contendo as seguintes propriedades.
instance
: A instância do componente onde a diretiva é usada.value
: O valor passado para a diretiva. Por exemplo emv-my-directive="1 + 1"
, o valor seria2
.oldValue
: O valor anterior, disponível somente embeforeUpdate
eupdated
. Está disponível se o valor foi alterado ou não.arg
: O argumento passado para a diretiva, se houver. Por exemplo emv-my-directive:foo
, o argumento seria"foo"
.modifiers
: Um objeto contendo modificadores, se houver. Por exemplo emv-my-directive.foo.bar
, o objetomodifiers
seria{ foo: true, bar: true }
.dir
: um objeto, passado como um parâmetro quando a diretiva é registrada. Por exemplo, na diretiva:
app.directive('focus', {
mounted(el) {
el.focus()
}
})
2
3
4
5
dir
seria o seguinte objeto:
{
mounted(el) {
el.focus()
}
}
2
3
4
5
# vnode
Um desenho (blueprint) do elemento DOM real recebido como o argumento el
acima.
# prevNode
O nó virtual anterior, somente disponível nos gatilhos beforeUpdate
e updated
.
Nota
Além de el
, você deve tratar esses argumentos como somente leitura e nunca modificá-los. Se você precisar compartilhar informações entre gatilhos, é recomendado fazê-lo por meio do elemento dataset (opens new window).
- Ver também: Diretivas Personalizadas
# mixin
Argumentos:
{Object} mixin
Retorna:
- A instância da aplicação
Uso:
Aplicar um mixin em todo o escopo da aplicação. Uma vez registrado eles podem ser usados no template de qualquer componente da aplicação atual. Pode ser usado por autores de plugins para injetar comportamento personalizado nos componentes. Não recomendado no código da aplicação.
Ver também: Mixin Global
# mount
Argumentos:
{Element | string} rootContainer
{boolean} isHydrate (opcional)
Retorna:
- A instância do componente raiz
Uso:
O
innerHTML
do elemento DOM fornecido será substituído pelo template renderizado do componente raiz do aplicativo.Exemplo:
<body>
<div id="my-app"></div>
</body>
2
3
import { createApp } from 'vue'
const app = createApp({})
// faça alguns preparativos necessários
app.mount('#my-app')
2
3
4
5
- Ver também:
# provide
Argumentos:
{string | Symbol} key
value
Retorna:
- A instância da aplicação
Uso:
Define um valor que pode ser injetado em todos os componentes dentro da aplicação. Componentes devem usar
inject
para receber os valores providos.De uma perspectiva
provide
/inject
, a aplicação pode ser considerada como um ancestral do nível raiz, com o componente raiz como seu filho único.Este método não pode ser confundido com a opção
provide
de componente ou a funçãoprovide
da API de composição. Embora também façam parte do mesmo mecanismoprovide
/inject
, eles são usados para configurar valores providos por um componente ao invés da aplicação.Prover valores por meio da aplicação é especialmente útil quando ao escrever plugins, pois os plugins normalmente não seriam capazes de prover valores usando componentes. É uma alternativa ao uso de globalProperties.
Nota
Os vínculos
provide
einject
NÃO são reativos. Isto é intencional. No entanto, se você passar um objeto reativo, as propriedades desse objeto permanecerão reativas.Exemplo:
Injetando uma propriedade no componente raiz, com um valor provido pela aplicação:
import { createApp } from 'vue'
const app = createApp({
inject: ['user'],
template: `
<div>
{{ user }}
</div>
`
})
app.provide('user', 'administrator')
2
3
4
5
6
7
8
9
10
11
12
- Ver também:
# unmount
Uso:
Desmonta um componente raiz da instância da aplicação.
Exemplo:
<body>
<div id="my-app"></div>
</body>
2
3
import { createApp } from 'vue'
const app = createApp({})
// faça algumas preparações necessárias
app.mount('#my-app')
// Aplicação será desmontada 5 segundos após a montagem
setTimeout(() => app.unmount(), 5000)
2
3
4
5
6
7
8
# use
Argumentos:
{Object | Function} plugin
...options (opcional)
Retorna:
- A instância da aplicação
Uso:
Instalar um plugin Vue.js. Se o plugin é um objeto, deve expor um método
install
. Se for uma função em si, esta será tratada como o métodoinstall
.O método
install
será chamado com a aplicação como seu primeiro argumento. Quaisqueroptions
passadas parause
serão passadas em argumentos subsequentes.Quando esse método é chamado no mesmo plugin várias vezes, o plugin será instalado apenas uma vez.
Exemplo:
import { createApp } from 'vue' import MyPlugin from './plugins/MyPlugin' const app = createApp({}) app.use(MyPlugin) app.mount('#app')
1
2
3
4
5
6
7Ver também: Plugins
# version
Uso:
Fornece a versão instalada do Vue como uma string. Isso é especialmente útil para plugins da comunidade, onde você pode usar estratégias diferentes para versões diferentes.
Exemplo:
export default { install(app) { const version = Number(app.version.split('.')[0]) if (version < 3) { console.warn('Este plugin requer o Vue 3') } // ... } }
1
2
3
4
5
6
7
8
9
10
11Ver também:: API Global - version