Transcrypt é um transpilador que converte Python em JavaScript. Ele gera código JS legível e de alta performance. Primeiramente, a sintaxe Python permanece quase idêntica. Por exemplo, você usa def, class e for normalmente. Além disso, o código gerado roda tão rápido quanto JS nativo. Isso ocorre porque a tradução é direta, sem interpretação em tempo real. A voz passiva é usada aqui: “os tipos dinâmicos são preservados na conversão”. Quando utilizar Transcrypt? Em projetos frontend que exigem performance. Também em aplicações onde o tamanho do código importa. Ao contrário do Brython, ele não carrega um interpretador inteiro. Portanto, o bundle final é muito menor. Vamos explorar instalação, exemplos e casos de uso. Três subtítulos organizam este guia completo.
Instalação e primeiro código com transcrypt
Transcrypt é instalado via pip no seu ambiente Python. Execute pip install transcrypt no terminal. Depois, escreva seu código Python em um arquivo .py. Para transpilar, use o comando transcrypt meu_script.py. O resultado será uma pasta __javascript__ com arquivos .js. Esses arquivos podem ser incluídos diretamente no HTML. A voz passiva é aplicada: “os imports são resolvidos em tempo de compilação”. Exemplo de um script Python para Transcrypt:
|
1 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 31 32 33 34 35 |
# arquivo: app.py from javascript import console, document, Math def saudacao(nome): """Função que será chamada do JavaScript.""" return f"Olá, {nome}! Bem-vindo ao Transcrypt." def dobrar_numero(x): return x * 2 class Contador: def __init__(self): self.valor = 0 def incrementar(self): self.valor += 1 return self.valor # Esta função será exposta para o HTML def configurar_botao(): botao = document.getElementById("meuBotao") saida = document.getElementById("saida") def ao_clicar(evento): saida.innerHTML = saudacao("Usuário") botao.addEventListener("click", ao_clicar) # Exporta funções para o escopo global do JS __pragma__('js', '{}', ''' window.saudacao = saudacao; window.dobrarNumero = dobrar_numero; window.configurarBotao = configurar_botao; window.Contador = Contador; ''') |
Após transpilar, inclua o JS gerado no HTML: <script src="__javascript__/app.js"></script>. Depois, chame configurarBotao() no evento onload da página. O Transcrypt mantém a tipagem dinâmica do Python.
Integração com bibliotecas javascript e dom
Transcrypt acessa qualquer biblioteca JavaScript nativa. Use o módulo javascript para importar objetos globais. Por exemplo, from javascript import JSON, localStorage. Você também pode chamar APIs do navegador diretamente. A sintaxe para manipular o DOM é muito similar ao JS puro. Isso reduz a curva de aprendizado para desenvolvedores web. Quando usar essa integração? Em projetos que usam React, Vue ou D3. Por exemplo, você escreve a lógica em Python e chama componentes React. Além disso, o código gerado é compatível com bundlers como Webpack. Um exemplo de uso com localStorage:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
from javascript import localStorage, JSON, console def salvar_preferencia(chave, valor): """Salva um valor no localStorage do navegador.""" dados = { 'chave': chave, 'valor': valor, 'timestamp': Date.now() } localStorage.setItem(chave, JSON.stringify(dados)) console.log(f"Preferência {chave} salva!") def carregar_preferencia(chave): """Carrega um valor do localStorage.""" item = localStorage.getItem(chave) if item: dados = JSON.parse(item) return dados['valor'] return None # Acessando o objeto Date do JavaScript from javascript import Date agora = Date.now() console.log(f"Timestamp atual: {agora}") |
Note que Date.now() vem diretamente do JS. A integração é tão transparente que parece código Python puro. Isso é uma das maiores forças do Transcrypt.
Transcrypt vs. brython vs. pyscript
Transcrypt gera código JavaScript independente e leve. Brython precisa carregar um interpretador Python inteiro. PyScript usa WebAssembly, que é mais pesado ainda. Portanto, Transcrypt vence em performance e tamanho final. Quando escolher Transcrypt? Em aplicações web profissionais. Também em projetos onde o tempo de carregamento é crítico. Por outro lado, ele não suporta NumPy ou Pandas. Bibliotecas com extensões C (como TensorFlow) não funcionam. A fórmula de tamanho de bundle pode ajudar: \(T_{\text{Transcrypt}} \approx 0.2 \times T_{\text{Brython}}\) Ou seja, Transcrypt é cerca de 5 vezes menor que Brython. Então, para aplicações leves e rápidas, ele é imbatível. Desvantagem: a comunidade é pequena e a documentação limitada. No entanto, o projeto é estável e usado em produção. Para quem quer Python no frontend com performance, Transcrypt é a escolha. Experimente transpilar um pequeno componente hoje mesmo. Você ficará surpreso com a velocidade e simplicidade.