問題タブ [esprima]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
203 参照

github - 完全な github リポジトリ ファイル ツリーをロードする最も効率的な方法は何ですか?

私は単純な Web ページ (バックエンドなし) に取り組んでいます。リポジトリ内の js コードに関するいくつかの基本的な統計を提供します。

使用シナリオ:

  1. ユーザーは自分の認証トークンを<input/>
  2. ユーザーが別のリポジトリ ルート パスを追加します<input/>
  3. ユーザーがクリック<button/>してファイルをロード
  4. window.fetch は、ルート ディレクトリから始まるツリーを取得します。何かのようなもの: [{ name:'root', children:[ {name:'foo.js',contents:'<js code>'}, {name:'bar.js',contents:'<js code>'}, { name:'src', children:[ {name:'baz.js',contents:'<js code>'}, ...etc ] } ] }]
  5. Esprima は<js code>セクションを AST オブジェクトに解析します
  6. 他のコードは AST オブジェクトから統計情報を取得します
  7. ページにはこれらの統計が表示されます

基本的な GraphQL クエリを実行しましたが、1 つのツリー レベルしかロードしません。複数のリクエストにわたって再帰的にツリーを構築するロジックと複雑さを回避したいと考えています。

Github の v3 再帰ツリー API は、ファイルの内容をロードするのに最適です。残念ながら、そうではなく、GraphQL API にはまだ再帰的な同等物がありません。

Web ページが github リポジトリのファイル ツリーのコンテンツをロードする最も効率的な方法は何ですか? Github の API を使用したソリューションは、他のより効率的な方法が存在する場合と同様に機能します。

ありがとう!

0 投票する
2 に答える
3693 参照

javascript - カスタム AST を JS コードに変換するにはどうすればよいですか

私は現在、私が設計した新しい言語仕様からカスタム AST を生成しています。このカスタム AST には、JavaScript コードを生成するために必要なすべての情報を使用して設計したさまざまなノードが含まれています。例えば:

いくつかの if 条件を含む JavaScript 関数に変換したい customExpressionNode があるとします。

私は現在、カスタム AST から新しい Javascript AST を生成するために、Babylon や Esprima などのライブラリを検討していますが、私が見たところ、これらのライブラリが使用する AST は非常に複雑です。また、jsコードをいくつかのファイルに出力してから、それらを解析してコンパイルすることも避けたいので、私の質問は次のとおりです。

JavaScript コードの生成に使用できる JavaScript 準拠の AST をプログラムで生成するより良い方法はありますか?