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.