DevTools para miniapp

Experiência do desenvolvedor

Agora que já falamos sobre miniapps em si, quero me concentrar na experiência do desenvolvedor para as várias plataformas de superapps. O desenvolvimento de miniaplicativos em todas as plataformas acontece em IDEs fornecidos sem custo financeiro pelas plataformas de superaplicativos. Embora existam mais, quero me concentrar nas quatro mais populares e em uma quinta para a comparação.

Ambientes de desenvolvimento integrado para miniapps

Assim como os superapps, a maioria dos ambientes de desenvolvimento integrados está disponível apenas em chinês. É importante instalar a versão em chinês e não a versão em inglês (ou no exterior) disponível, já que ela pode não estar atualizada. Se você é um desenvolvedor do macOS, saiba que nem todos os ambientes de desenvolvimento integrado são assinados, o que significa que o macOS se recusa a executar o instalador. Você pode por sua conta e risco ignorar essa etapa, conforme descrito na Ajuda da Apple.

Projetos iniciais de miniaplicativos

Para começar rapidamente com o desenvolvimento de miniapps, todos os provedores de superapps oferecem apps de demonstração que podem ser baixados e testados imediatamente e que às vezes também são integrados nos assistentes "New Project" dos vários ambientes de desenvolvimento integrados.

Fluxo de desenvolvimento

Depois de iniciar o ambiente de desenvolvimento integrado e carregar ou criar um miniapp (de demonstração), a primeira etapa é sempre fazer login. Normalmente, basta ler um código QR com o superapp (em que você já fez login) gerado pelo ambiente de desenvolvimento integrado. É muito raro precisar inserir uma senha. Depois que você faz login, o ambiente de desenvolvimento integrado conhece sua identidade e permite que você comece a programar, depurar, testar e enviar seu app para análise. Confira abaixo capturas de tela dos cinco ambientes de desenvolvimento integrados mencionados no parágrafo acima.

Janela do aplicativo WeChat DevTools mostrando o simulador, o editor de código e o depurador.
WeChat DevTools com simulador, editor de código e depurador.
Janela do aplicativo Alipay DevTools mostrando o editor de código, o simulador e o depurador.
Alipay DevTools com editor de código, simulador e depurador.
Janela do aplicativo Baidu DevTools mostrando simulador, editor de código e depurador.
Baidu DevTools com simulador, editor de código e depurador.
Janela do aplicativo ByteDance DevTools mostrando o simulador, o editor de código e o depurador.
Ferramentas de desenvolvimento da ByteDance com simulador, editor de código e depurador.
Janela do aplicativo do App Quickstart DevTools mostrando o editor de código, o simulador e o depurador.
Ferramentas de desenvolvimento rápidas para apps com editor de código, simulador e depurador.

Como você pode ver, os componentes fundamentais de todos os ambientes de desenvolvimento integrados são muito semelhantes. Você sempre tem um editor de código baseado no editor Monaco, o mesmo projeto que também alimenta o VS Code. Em todos os ambientes de desenvolvimento integrados, há um depurador baseado no front-end do Chrome DevTools com algumas modificações. Mais informações sobre isso mais tarde (consulte Depuração). Os IDEs em si são implementados como apps NW.js ou Electron. Os simuladores nos IDEs são realizados como uma tag <webview> NW.js ou tag <webview> do Electron, que, por sua vez, são baseadas em uma tag <webview> do Chromium. Se você tiver interesse nos componentes internos do ambiente de desenvolvimento integrado, muitas vezes poderá simplesmente inspecioná-los com o Chrome DevTools usando o atalho de teclado Control+Alt+I (ou Command+Option+I no Mac).

O Chrome DevTools usado para inspecionar o Baidu DevTools mostra a tag de visualização da Web do simulador no painel de elementos do Chrome DevTools.
Inspecionar o Baidu DevTools com o Chrome DevTools revela que o simulador é implementado como uma tag <webview> do Electron.

Teste e depuração em dispositivos reais e no simulador

O simulador é comparável ao que você conhece do modo dispositivo do Chrome DevTools. É possível simular diferentes dispositivos Android e iOS, mudar a escala e a orientação do dispositivo, mas também simular vários estados de rede, pressão de memória, um evento de leitura de código de barras, encerramento inesperado e modo escuro.

Embora o simulador integrado seja suficiente para ter uma ideia aproximada de como o app se comporta, o teste no dispositivo, como nos apps da Web comuns, é insubstituível. Testar um miniapp em desenvolvimento é só ler um código QR. Por exemplo, no ByteDance DevTools, a leitura de um QR code gerado dinamicamente pelo ambiente de desenvolvimento integrado com um dispositivo real leva a uma versão hospedada na nuvem do mini app que pode ser testada imediatamente no dispositivo. O funcionamento para a ByteDance é que o URL por trás do código QR (exemplo) redireciona para uma página hospedada (exemplo), que contém links com esquemas URI especiais, como snssdk1128://, para visualizar o miniapp nos vários superapps da ByteDance, como Douyin ou Toutiao. Confira um exemplo. Outros provedores de superapps não passam por uma página intermediária, mas abrem a visualização diretamente.

ByteDance DevTools mostrando um código QR que o usuário pode ler com o app Douyin para conferir o miniapp atual no dispositivo.
ByteDance DevTools mostrando um código QR que o usuário pode ler com o app Douyin para testes imediatos no dispositivo.
Página de destino intermediária para visualizar um miniapp da ByteDance em vários superapps da empresa, aberta em um navegador comum para computador para fazer engenharia reversa do processo.
Página de destino intermediária da ByteDance para visualizar um miniapp (aberta em um navegador para computador para mostrar o fluxo).

Um recurso ainda mais interessante é a depuração remota de pré-lançamento baseada na nuvem. Depois de ler um código QR especial gerado pelo IDE, o mini app é aberto no dispositivo físico, com uma janela do Chrome DevTools em execução no computador para depuração remota.

Um smartphone executando um miniapp com partes da interface destacadas pelo depurador do ByteDance DevTools em execução em um laptop que o inspeciona.
Depurar remotamente sem fio um miniapp em um dispositivo real com o ByteDance DevTools.

Debugger

Depuração de elementos

A experiência de depuração de miniapps é muito familiar para quem já trabalhou com o Chrome DevTools. No entanto, há algumas diferenças importantes que tornam o fluxo de trabalho adaptado a miniapps. Em vez do painel de elementos do Chrome DevTools, os mini-IDEs de apps têm um painel personalizado adaptado ao dialeto específico de HTML. Por exemplo, no caso do WeChat, o painel é chamado Wxml, que significa WeiXin Markup Language. Nas Ferramentas do desenvolvedor do Baidu, ele é chamado de Elemento Swan. O ByteDance DevTools chama Bxml. O Alipay chama esse arquivo de AXML, e o Quick App o referencia simplesmente como UX. Vou me aprofundar nessas linguagens de marcação mais tarde.

Inspeção de uma imagem com o painel &quot;Wxml&quot; do WeChat DevTools. Ele mostra que a tag em uso é &quot;image&quot;.
Inspeção de um elemento <image> com o WeChat DevTools.

Elementos personalizados em segundo plano

Inspecionar a WebView em um dispositivo real usando about://inspect/#devices revela que o WeChat DevTools estava deliberadamente ocultando a verdade. Onde as Ferramentas para Desenvolvedores do WeChat mostravam um <image>, o que estou vendo é um elemento personalizado chamado <wx-image> com um <div> como único filho. É interessante notar que esse elemento personalizado não usa o Shadow DOM. Mais informações sobre esses componentes mais tarde.

Inspeção de um miniapp do WeChat em execução em um dispositivo real com o Chrome DevTools. Onde o WeChat DevTools informou que estou analisando uma tag &quot;image&quot;, o Chrome DevTools revela que estou lidando com um elemento personalizado &quot;wx-image&quot;.
Inspecionar um elemento <image> com o WeChat DevTools revela que ele é, na verdade, um elemento personalizado <wx-image>.

Depuração de CSS

Outra diferença é a nova unidade de comprimento rpx para pixel responsivo nos vários dialetos do CSS. Mais informações sobre essa unidade. As Ferramentas para Desenvolvedores do WeChat usam unidades de comprimento CSS independentes do dispositivo para tornar o desenvolvimento para diferentes tamanhos de dispositivo mais intuitivo.

Inspeção de uma visualização com um padding superior e inferior especificado de &quot;200rpx&quot; no WeChat DevTools.
Inspeção do padding especificado em pixels responsivos (200rpx 0) de uma visualização com o WeChat DevTools.

Auditoria de desempenho

A performance é o foco dos miniapps, então não é surpresa que o WeChat DevTools e alguns outros DevTools tenham uma ferramenta de auditoria integrada inspirada no Lighthouse. As áreas de foco das auditorias são "Total", "Performance", "Experiência" e "Prática recomendada". A visualização do ambiente de desenvolvimento integrado pode ser personalizada. Na captura de tela abaixo, ocultei temporariamente o editor de código para ter mais espaço na tela para a ferramenta de auditoria.

Executar uma auditoria de desempenho com a ferramenta integrada. As pontuações mostram o total, a performance, a experiência e as práticas recomendadas, cada uma com 100 pontos.
Ferramentas de auditoria integradas no WeChat DevTools mostrando "Total", "Performance", "Experiência" e "Práticas recomendadas".

Simulação de API

Em vez de exigir que o desenvolvedor configure um serviço separado, a simulação de respostas de API faz parte diretamente das DevTools do WeChat. Com uma interface fácil de usar, o desenvolvedor pode configurar endpoints de API e as respostas simuladas desejadas.

Como configurar uma resposta simulada para um endpoint da API nas Ferramentas para Desenvolvedores do WeChat.
O recurso de simulação de resposta da API integrada do WeChat DevTools.

Agradecimentos

Este artigo foi revisado por Joe Medley, Kayce Basques, Milica Mihajlija, Alan Kent e Keith Gu.