No desenvolvimento de mini programas WeChat, o arquivo app.js é fundamental para configurar a aplicação. A função App é utilizada para registrar um mini programa ou definir variáveis globais. Esta função deve ser chamada exclusivamente em app.js e sua invocação é obrigatória, permitindo apenas uma chamada.
A sintaxe da função App é a seguinte: App(Object), onde o parâmetro Object é um objeto JSON que contém configurações e métodos de ciclo de vida. A seguir, detalha-se a estrutura típica:
// Registro do mini programa com métodos de ciclo de vida e dados globais App({
/**
* aoLancar(Object)
* Descrição: Acionado quando a inicialização do mini programa é concluída, ocorrendo apenas uma vez globalmente.
* Parâmetros: Objeto com as seguintes propriedades:
* detalhes.caminho [String] Caminho de abertura do mini programa
* detalhes.consulta [String] Parâmetros de consulta na abertura
* detalhes.cena [Number] Valor da cena de abertura (para referência de cenas: https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/scene.html)
* detalhes.ticketCompartilhamento [String] Informações de compartilhamento, detalhes em https://developers.weixin.qq.com/miniprogram/dev/api/share.html#wxgetshareinfoobject
* detalhes.infoReferenciador [Object] Retornado quando a cena envolve abertura a partir de outro mini programa, conta pública ou App
* detalhes.infoReferenciador.appId [String] appId da fonte
* detalhes.infoReferenciador.dadosExtras [Object] Dados passados da fonte, suportado em cenas 1037 ou 1038
*
* Nota: As propriedades infoReferenciador, appId e dadosExtras estão relacionadas ao valor da cena.
**/
aoLancar : function(detalhes){
},
/**
* aoExibir(Object)
* Descrição: Acionado quando o mini programa é iniciado ou retorna ao primeiro plano a partir do fundo.
* Parâmetros: Objeto idêntico ao de aoLancar.
**/
aoExibir : function(detalhes){
},
/**
* aoEsconder()
* Descrição: Acionado quando o mini programa passa para o segundo plano.
**/
aoEsconder : function(){
},
/**
* aoErro(erro)
* Descrição: Acionado quando ocorre um erro de script ou falha na chamada de API no mini programa.
* Parâmetros: erro [String] Mensagem de erro, incluindo rastreamento de pilha.
**/
aoErro : function(erro){
},
/**
* aoPaginaNaoEncontrada(Object)
* Descrição: Acionado quando uma página solicitada não existe no mini programa.
* Parâmetros: Objeto com as seguintes propriedades:
* detalhes.caminho [String] Caminho da página inexistente
* detalhes.consulta [Object] Parâmetros de consulta da página inexistente
* detalhes.ePaginaEntrada [Boolean] Indica se é a primeira página desta sessão (ex.: ao entrar por compartilhamento, a primeira página pode ser a página de compartilhamento configurada)
*
* Notas:
* 1) Desenvolvedores podem redirecionar dentro do callback (ex.: wx.redirectTo...), mas o tratamento deve ser síncrono; operações assíncronas (como setTimeout) são ineficazes.
* 2) Se não houver listener para aoPaginaNaoEncontrada, o cliente WeChat exibirá uma mensagem nativa de página não encontrada.
* 3) Se o callback redirecionar para outra página inexistente, a mensagem nativa será exibida sem novos callbacks.
**/
aoPaginaNaoEncontrada : function(detalhes){
this.paginasErro = 2 // Altera a variável global paginasErro via this
},
/**
* Dados personalizados do tipo array ou JSON, compartilhados por todas as páginas do mini programa.
**/
paginasErro : 0,
contador : 1,
minhaArray : [1, 2, 3],
meuJson : {
"titulo" : "olá mundo!"
}
})
</div>Para acessar dados globais definidos dentro da função App, como a variável contador no exemplo, utilize a função getApp. Sua sintaxe é getApp(Object), onde o parâmetro Object opcional inclui a propriedade allowDefault \[Boolean\] para retornar uma implementação padrão caso o App não esteja definido; nesse caso, as propriedades da implementação padrão serão mescldaas no App.
Cuidados importantes ao usar getApp:
- Não chame getApp() dentro de funções declaradas em App(); utilize this para acessar a instância do aplicativo.
- Após obter a instância via getApp(), não invoque funções de ciclo de vida diretamente.
Exemplo de como acessar a variável global contador em uma página, como index.js:
<div>```
// Obtenção da instância do aplicativo
const instanciaApp = getApp()
// Definição da página com acesso à variável global
Page({
carregar: function () {
// Acessando o contador definido no app.js
console.log( instanciaApp.contador );
}
})