Configuração do Ambiente de Desenvolvimento
Para iniciar o desenvolvimento de um mini programa do WeChat, é necessário configurar corretamente o ambiente. O processo envolve a instalação da ferramenta oficial de desenvolvimento e a criação de um projeto.
Instalação da Ferramenta de Desenvolvimento WeChat
A ferramenta de desenvolvimento WeChat é um ambiente integrado (IDE) fornecido oficialmente. Pode ser baixada na plataforma pública do WeChat (https://mp.weixin.qq.com/). Após o login, acesse a seção "Ferramentas de Desenvolvimento" no menu "Desenvolvimento" para obter o instalador compatível com seu sistema operacional.
Criação de um Projeto
Após a instalação, abra a ferramenta e selecione "Criar Projeto". É necessário fornecer um AppID válido, que pode ser obtido registrando um mini programa na plataforma pública. Preencha os detalhes do projeto, como nome e diretório local, para gerar a estrutura inicial de arquivos.
Análise da Estrutura do Código Fonte
Um projeto de mini programa possui uma organização de arquivos específica que define sua estrutura, estilo, lógica e configuração.
Componentes de uma Página
Cada tela é composta por quatro tipos de arquivo:
.wxml: Define a estrutura do markup, semelhante ao HTML..wxss: Contém regras de estilo, seguindo a sintaxe do CSS..js: Gerencia a lógica e interatividade da página..json: Configura opções específicas da página, como título da barra de navegação.
Exemplo de Estrutura de Página
// página-exemplo.js
Pagina({
dados: {
listaProdutos: [
{ identificador: 101, titulo: 'Notebook', valor: 3500 },
{ identificador: 102, titulo: 'Mouse', valor: 89 }
]
}
});
<view class="conteiner">
<block wx:for="{{listaProdutos}}" wx:key="identificador">
<view class="item-produto">
<text>{{item.titulo}}</text>
<text>R$ {{item.valor}}</text>
</view>
</block>
</view>
/* página-exemplo.wxss */
.conteiner {
display: flex;
flex-direction: column;
}
.item-produto {
margin-bottom: \(|);
}
Configuração Global e Modularização
O arquivo app.json define configurações globais, como rotas de páginas e aparência da janela. A modularização permite a reutilização de código através dos métodos module.exports e require().
// utilitarios.js
function formatarMoeda(valor) {
return 'R$ ' + valor.toFixed(2);
}
module.exports = { formatarMoeda };
Desenvolvimento das Funcionalidades Principais
Exibição de Catálogo de Produtos
A renderização eficiente de uma lista de produtos é crucial. Utilize a diretiva wx:for para iterar sobre os dados.
<view class="grade-produtos">
<view class="cartao-produto" wx:for="{{estoque}}" wx:key="sku">
<image src="{{item.imagemUrl}}"></image>
<view class="detalhes">
<text class="nome">{{item.nome}}</text>
<text class="preco">{{formatarPreco(item.preco)}}</text>
</view>
</view>
</view>
Gerenciamento do Carrinho de Compras
O carrinho pode ser gerenciado utilizando o armazenamento local do mini programa para persistência de dados entre sessões.
// gerenciadorCarrinho.js
const armazenamento = require('./armazenamentoLocal');
class GerenciadorCarrinho {
constructor() {
this.itens = armazenamento.recuperar('carrinho') || [];
}
adicionarItem(produto, quantidade = 1) {
const itemExistente = this.itens.find(i => i.id === produto.id);
if (itemExistente) {
itemExistente.quantidade += quantidade;
} else {
this.itens.push({ ...produto, quantidade });
}
this.sincronizarArmazenamento();
}
sincronizarArmazenamento() {
armazenamento.gravar('carrinho', this.itens);
}
}
Processamento de Pedidos e Integração com Pagamento
A criação de um pedido consolida os itens do carrinho e inicia o fluxo de pagamento. A integração com a API de pagamanto do WeChat (wx.requestPayment) é necessária para finalizar a transação.
// servicoPedido.js
async function criarPedido(itensCarrinho, enderecoEntrega) {
const resposta = await wx.solicitacao({
url: 'https://api.loja.com/pedidos',
method: 'POST',
dados: { itens: itensCarrinho, endereco: enderecoEntrega }
});
return resposta.dados; // Contém parâmetros para wx.solicitacaoPagamento
}
function iniciarPagamento(infoPagamento) {
wx.solicitacaoPagamento({
...infoPagamento,
success(res) { console.log('Pagamento concluído:', res); },
fail(erro) { console.error('Falha no pagamento:', erro); }
});
}
Padrão de Arquitetura MVVM e Gerenciamento de Estado
O desenvolvimento de mini programas beneficia-se da adoção do padrão Model-View-ViewModel (MVVM), que promove a separação entre a lógica de negócio e a interface do usuário.
Vinculação de Dados Reativa
O sistema de dados do mini programa (Page.data e o método setData) atua como um mecanismo de vinculação reativa simplificado. Alterações nos dados refletem-se automaticamente na view.
Pagina({
dados: { contador: 0 },
incrementar() {
this.setData({ contador: this.dados.contador + 1 });
}
});
Estratégias para Estados Compartilhados
Para estados globais (ex.: informações do usuário logado), pode-se utilizar o objeto global App ou implementar um geranciador de estado centralizado.
// app.js
App({
estadoGlobal: {
usuario: null,
tokenSessao: ''
}
});
// Em qualquer página
const app = getApp();
console.log(app.estadoGlobal.usuario);
Utilização das APIs do WeChat
As APIs fornecidas pela plataforma permitem acessar capacidades do dispositivo e serviços do WeChat.
Solicitações de Rede
A API wx.solicitacao é usada para comunicação HTTP. É essencial tratar erros de rede e respostas não bem-sucedidas.
wx.solicitacao({
url: 'https://api.exemplo.com/dados',
method: 'GET',
success(resposta) { /* processar dados */ },
fail(erro) { /* lidar com falha de rede */ },
complete() { /* executar independente do resultado */ }
});
APIs de Mídia e Permissões
APIs como wx.escolherImagem para galeria/câmera ou wx.getLocation para geolocalização requerem que o usuário conceda permisões. O fluxo deve verificar o estado da autorização antes da chamada.
// Verificar e solicitar permissão para localização
wx.verificarConfiguracao({
withSubKey: true,
success(res) {
if (res.authSetting['scope.userLocation'] !== true) {
wx.autorizar({ scope: 'scope.userLocation' });
} else {
wx.obterLocalizacao({ type: 'wgs84' });
}
}
});