Repolode
dop251

dop251/goja

Goアプリケーションへの組み込みに使える、純Go製のECMAScript 5.1 JavaScriptエンジン。

スター
7,155
フォーク
497
未解決の Issue
33
最終コミット
16 時間前

これは何?

Gojaは、Goだけで実装されたJavaScriptエンジンです。ECMAScript 5.1を対象としており、ES6の機能の多くは現在も開発中です。GoプログラムからJavaScriptコードを読み込んで実行し、Goの値をスクリプトに渡したり、実行結果を受け取ったりできます。cgoやV8ラッパーには依存しません。

設定、ルール、プラグインコードなど、スクリプトでGoアプリケーション内のロジックを動かす用途を想定しています。純Go製なのでビルドが簡単で、Goがサポートするあらゆるプラットフォームで動作します。また、実行時間の長いスクリプトの中断や、Goの構造体フィールド名と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の構造体フィールドやメソッドをJavaScriptの名前に対応付け。
  • 05別のgoroutineから実行中のスクリプトを中断。
  • 06sourcemapに対応し、BabelとTypeScriptコンパイラを実行可能。

ユースケース

  • Goのサービスにユーザー定義のスクリプトやルールを組み込む。
  • cgoを使わずに、Goプログラム内でES5ライブラリやビルドツールを実行する。
  • JavaScriptで制御するGo向けのプラグインシステムや設定システムを構築する。
  • GoからJavaScriptの実行環境を調査・制御する。

トピック

よくある質問

goja とは?
Goアプリケーションへの組み込みに使える、純Go製のECMAScript 5.1 JavaScriptエンジン。 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ライブラリやビルドツールを実行する。 JavaScriptで制御するGo向けのプラグインシステムや設定システムを構築する。 GoからJavaScriptの実行環境を調査・制御する。
goja はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/dop251/goja

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト