Repolode
dop251

dop251/goja

Engine JavaScript ECMAScript 5.1 escrita em Go puro para incorporar a execução de JS em aplicações Go.

Estrelas
7,155
Forks
497
Issues abertas
33
Último commit
há 16 horas

O que é?

Goja é uma engine JavaScript implementada inteiramente em Go, compatível com ECMAScript 5.1, enquanto a maioria dos recursos do ES6 ainda está em desenvolvimento. Ela permite que um programa Go carregue e execute código JavaScript, passe valores de Go para os scripts e recupere os resultados, sem depender de cgo ou de um wrapper do V8.

A engine é voltada a cenários em que scripts controlam a lógica dentro de uma aplicação Go, como configurações, regras ou código de plugins. Por ser escrita em Go puro, é fácil de compilar e funciona em qualquer plataforma compatível com Go. Também oferece ao programa hospedeiro controle detalhado sobre o ambiente de execução, incluindo a possibilidade de interromper scripts de longa duração e mapear os nomes dos campos de structs Go para as convenções de nomenclatura do JavaScript.

Goja não oferece setTimeout, setInterval nem APIs do Node.js; esses recursos são fornecidos pelo projeto separado goja_nodejs. Cada instância de Runtime só pode ser usada por uma goroutine, e o desempenho fica bem abaixo do V8 em JavaScript com uso intenso de computação.

Recursos principais

  • 01Implementa ECMAScript 5.1 com suporte a expressões regulares e modo estrito.
  • 02Converte valores de Go para JavaScript e exporta valores JavaScript de volta para Go.
  • 03Chama funções JavaScript a partir de Go, com ou sem um valor this especificado.
  • 04Mapeia campos e métodos de structs Go para nomes JavaScript por meio de um mapeador de nomes personalizado.
  • 05Interrompe scripts em execução a partir de outra goroutine.
  • 06Oferece suporte a sourcemaps e pode executar Babel e o compilador TypeScript.

Casos de uso

  • Incorporar scripts ou regras definidos pelo usuário em um serviço Go.
  • Executar bibliotecas ES5 ou ferramentas de build dentro de um programa Go sem cgo.
  • Criar um sistema de plugins ou configurações controlado por JavaScript em Go.
  • Pesquisar ou controlar um ambiente de execução JavaScript a partir de Go.

Tópicos

Perguntas frequentes

O que é goja?
Engine JavaScript ECMAScript 5.1 escrita em Go puro para incorporar a execução de JS em aplicações Go. Goja é uma engine JavaScript implementada inteiramente em Go, compatível com ECMAScript 5.1, enquanto a maioria dos recursos do ES6 ainda está em desenvolvimento. Ela permite que um programa Go carregue e execute código JavaScript, passe valores de Go para os scripts e recupere os resultados, sem depender de cgo ou de um wrapper do V8.
goja é gratuito? Qual é a licença?
goja é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
goja ainda é mantido?
Manutenção ativa. O último commit de goja foi em 21 de out. de 2026.
Para que posso usar goja?
Incorporar scripts ou regras definidos pelo usuário em um serviço Go. Executar bibliotecas ES5 ou ferramentas de build dentro de um programa Go sem cgo. Criar um sistema de plugins ou configurações controlado por JavaScript em Go. Pesquisar ou controlar um ambiente de execução JavaScript a partir de Go.
Onde consigo goja?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/dop251/goja

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados