Repolode
dop251

dop251/goja

순수 Go로 작성된 ECMAScript 5.1 JavaScript 엔진으로, Go 애플리케이션에 JS 실행 기능을 임베딩할 수 있습니다.

스타
7,155
포크
497
열린 이슈
33
마지막 커밋
16시간 전

어떤 프로젝트인가요?

Goja는 온전히 Go로 구현된 JavaScript 엔진으로, ECMAScript 5.1을 대상으로 하며 대부분의 ES6 기능은 아직 개발 중입니다. Go 프로그램에서 JavaScript 코드를 불러와 실행하고, Go 값을 스크립트에 전달한 뒤 결과를 가져올 수 있으며, cgo나 V8 래퍼에 의존하지 않습니다.

Go 애플리케이션 내부에서 스크립트가 설정, 규칙 또는 플러그인 코드 같은 로직을 처리하는 시나리오를 위해 설계되었습니다. 순수 Go로 작성되어 빌드가 간편하고 Go가 지원하는 모든 플랫폼에서 실행됩니다. 또한 오래 실행되는 스크립트를 중단하거나 Go struct 필드 이름을 JavaScript의 명명 규칙에 맞게 변환하는 등 실행 환경을 세밀하게 제어할 수 있습니다.

Goja는 setTimeout, setInterval 또는 Node.js API를 제공하지 않습니다. 이러한 기능은 별도 프로젝트인 goja_nodejs에서 제공합니다. 각 Runtime 인스턴스는 단일 goroutine에서만 사용할 수 있으며, 계산량이 많은 JavaScript를 실행할 때 성능은 V8보다 크게 낮습니다.

핵심 기능

  • 01정규식과 strict mode를 지원하는 ECMAScript 5.1을 구현합니다.
  • 02Go 값을 JavaScript로 변환하고, JavaScript 값을 Go로 내보냅니다.
  • 03this 값을 지정하거나 지정하지 않은 상태로 Go에서 JavaScript 함수를 호출합니다.
  • 04사용자 지정 name mapper를 통해 Go struct 필드와 메서드를 JavaScript 이름에 매핑합니다.
  • 05다른 goroutine에서 실행 중인 스크립트를 중단합니다.
  • 06sourcemap을 지원하며 Babel과 TypeScript 컴파일러를 실행할 수 있습니다.

활용 사례

  • Go 서비스에 사용자가 정의한 스크립트나 규칙을 임베딩합니다.
  • cgo 없이 Go 프로그램에서 ES5 라이브러리나 빌드 도구를 실행합니다.
  • Go에서 JavaScript로 구동되는 플러그인 또는 설정 시스템을 구축합니다.
  • Go에서 JavaScript 실행 환경을 연구하거나 제어합니다.

토픽

자주 묻는 질문

goja은(는) 무엇인가요?
순수 Go로 작성된 ECMAScript 5.1 JavaScript 엔진으로, Go 애플리케이션에 JS 실행 기능을 임베딩할 수 있습니다. Goja는 온전히 Go로 구현된 JavaScript 엔진으로, ECMAScript 5.1을 대상으로 하며 대부분의 ES6 기능은 아직 개발 중입니다. Go 프로그램에서 JavaScript 코드를 불러와 실행하고, Go 값을 스크립트에 전달한 뒤 결과를 가져올 수 있으며, cgo나 V8 래퍼에 의존하지 않습니다.
goja은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
goja은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
goja은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. goja의 마지막 커밋은 2026년 10월 21일입니다.
goja은(는) 어디에 사용할 수 있나요?
Go 서비스에 사용자가 정의한 스크립트나 규칙을 임베딩합니다. cgo 없이 Go 프로그램에서 ES5 라이브러리나 빌드 도구를 실행합니다. Go에서 JavaScript로 구동되는 플러그인 또는 설정 시스템을 구축합니다. Go에서 JavaScript 실행 환경을 연구하거나 제어합니다.
goja은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/dop251/goja

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트