DevTools para miniapp

A experiência do desenvolvedor

Agora que já falei sobre os mini apps por si só, quero me concentrar na experiência do desenvolvedor para as várias plataformas de superapp. O desenvolvimento de mini apps em todas as plataformas acontece em IDEs fornecidos sem custo financeiro pelas plataformas de superapps. Embora haja mais, quero me concentrar nos quatro mais populares e em um quinto para comparação com o Quick App.

IDEs de miniapps

Assim como os superapps, a maioria das IDEs está disponível apenas em chinês. É importante instalar a versão em chinês e não uma versão em inglês (ou de outro país) que às vezes está disponível, já que ela pode não estar atualizada. Se você for um desenvolvedor do macOS, saiba que nem todas as IDEs são assinadas, o que significa que o macOS se recusa a executar o instalador. Você pode, por sua conta e risco, ignorar isso conforme descrito na ajuda da Apple.

Projetos iniciais de mini apps

Para começar rapidamente a desenvolver 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 aos assistentes de "Novo projeto" das várias IDEs.

Fluxo de desenvolvimento

Depois de iniciar a IDE e carregar ou criar um mini app (de demonstração), a primeira etapa é sempre fazer login. Normalmente, basta ler um QR code com o superapp (em que você já fez login) gerado pela IDE. É muito raro precisar inserir uma senha. Depois de fazer login, o ambiente de desenvolvimento integrado reconhece sua identidade e permite que você comece a programar, depurar, testar e enviar seu app para análise. A seguir, você pode ver capturas de tela das cinco IDEs mencionadas no parágrafo acima.

Janela do aplicativo WeChat DevTools mostrando simulador, editor de código e depurador.
DevTools do WeChat com simulador, editor de código e depurador.
Janela do aplicativo Alipay DevTools mostrando o editor de código, o simulador e o depurador.
DevTools do Alipay 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 simulador, editor de código e depurador.
DevTools da ByteDance com simulador, editor de código e depurador.
Janela do aplicativo Quick App DevTools mostrando o editor de código, o simulador e o depurador.
Quick App DevTools com editor de código, simulador e depurador.

Como você pode ver, os componentes fundamentais de todas as IDEs são muito semelhantes. Você sempre tem um editor de código baseado no Monaco Editor, o mesmo projeto que também alimenta o VS Code. Em todas as IDEs, há um depurador baseado no front-end do Chrome DevTools com algumas modificações. Saiba mais sobre isso em Depurador. Os IDEs por si só são implementados como apps NW.js ou Electron. Os simuladores nos IDEs são realizados como uma tag <webview> NW.js ou Electron <webview>, que, por sua vez, são baseadas em uma tag <webview> Chromium. Se você tiver interesse nos internos do ambiente de desenvolvimento integrado, muitas vezes basta 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 DevTools do Baidu mostrando a tag webview do simulador no painel &quot;Elementos&quot; do Chrome DevTools.
A inspeção do Baidu DevTools com o Chrome DevTools revela que o simulador é realizado como uma tag <webview> do Electron.

Teste e depuração em simuladores e dispositivos reais

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, além de simular vários estados de rede, pressão de memória, um evento de leitura de código de barras, encerramento inesperado e modo noturno.

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

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

Um recurso ainda mais interessante é a depuração remota de prévia baseada na nuvem. Depois de ler um QR code especial gerado pelo IDE do Likewise, 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 mini app com partes da interface destacadas pelo depurador ByteDance DevTools em um laptop inspecionando o app.
Depuração remota sem fio de um mini app 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 adequado para mini apps. Em vez do painel "Elementos" do Chrome DevTools, os IDEs de mini apps têm um painel personalizado adaptado ao dialeto específico de HTML. Por exemplo, no caso do WeChat, o painel é chamado de Wxml, que significa WeiXin Markup Language. No Baidu DevTools, ele é chamado de Swan Element. O ByteDance DevTools chama isso de Bxml. O Alipay chama de AXML, e o Quick App se refere ao painel simplesmente como UX. Vou falar sobre essas linguagens de marcação mais tarde.

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

Elementos personalizados em segundo plano

A inspeção da WebView em um dispositivo real usando about://inspect/#devices revela que o WeChat DevTools estava ocultando a verdade de propósito. Onde o WeChat DevTools mostrou 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 detalhes sobre esses componentes adiante.

Inspeção de um mini app do WeChat em execução em um dispositivo real com o Chrome DevTools. Enquanto o WeChat DevTools informa que estou analisando uma tag &quot;image&quot;, o Chrome DevTools revela que estou lidando com um elemento personalizado &quot;wx-image&quot;.
A inspeção de 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. Saiba mais sobre essa unidade mais adiante. O WeChat DevTools usa unidades de comprimento CSS independentes de dispositivo para tornar o desenvolvimento para diferentes tamanhos de dispositivo mais intuitivo.

Inspecionando 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

O desempenho é fundamental para os mini apps. Por isso, 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áticas recomendadas. 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 performance com a ferramenta de auditoria integrada. As pontuações mostram Total, Performance, Experiência e Prática recomendada, cada uma com 100 pontos de 100.
A ferramenta de auditoria integrada no WeChat DevTools mostrando Total, Performance, Experience e Best Practice.

Simulação de API

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

Configuração de uma resposta simulada para um endpoint de API no WeChat DevTools.
Recurso integrado de simulação de resposta da API do WeChat DevTools.

Agradecimentos

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