問題タブ [requirejs-optimizer]

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 に答える
455 参照

javascript - タイプスクリプトの定義を整理してコードの重複を避ける

現在の状況:

以下で定義されたクラスがあります。

lib/components/widgets/MyWidget.ts:

javascript にコンパイルされ、lib-min.jsの結果として他のファイルにバンドルされます。

lib/components/widgets/MyWidget.tsにあったため、次のような定義「コレクション」ファイル ( mydefinition.d.ts ) を作成しました。

このようにして、次のように使用できます (もちろん、lib-min.jsをページに含めた後):

問題:

この種の重複を維持することは圧倒的であり、簡単に間違いを犯す可能性があることは明らかだと思います. また、typescript 2+ (1.8.9 から) にアップグレードした後、「重複した識別子」に対していくつかのコンパイル エラーが発生し、通常は以前のように機能しません。

  • IMyWidget のようなインターフェイスを作成して公開することはできますが、実装が欠落しており、新しいものを作成できません
  • mydefinition.d.tsから「declare module...」を削除することはできますが、モジュール ローダーはモジュールを見つけられません (r.js オプティマイザーがそのパスからモジュールに名前を付けるため)。

質問

これを解決するためのクリーンで「安価な」方法はありますか (可能であればコードの重複を避けます)?

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

javascript - requireJS オプティマイザー - 2 つの匿名モジュールを 1 つの結合された .js ファイルに結合する

RequireJS optimizerを使用して、2 つの require amd モジュールを 1 つの combined.js javascript ファイルに結合しようとしています。

**この質問は、この質問と同じではありません:問題の解決策や詳細な説明がなく、reactJS のドキュメントに矛盾するアドバイスがいくつかある、Mismatched anonymous define() モジュール。

module1.js

module2.js

推奨されるグッド プラクティス

requireJS wiki およびその他のソースでは、各モジュールに名前を設定するのではなく、ID なしで匿名のままにしておくことをお勧めします: https://github.com/requirejs/requirejs/wiki/Updating-existing -libraries#anon

"通常、名前付きモジュールを登録するのではなく、匿名モジュールとして登録する必要があります... "

RequireJS オプティマイザー - モジュールを 1 つの js ファイルにまとめる

【build.js】

[定義.js]

【requireJSオプティマイザーを吐き出す】

RequireJS オプティマイザー - 出力 - combined.js

結合された.jsファイルとモジュールを読み込もうとしています

[index.html]

問題

結合された.jsファイルをロードするとき、コードで上記の各モジュールのID名を指定しない限り、常に同じエラーが発生します: define('module1', factory); ...

エラー:

追加情報

  • すべてのファイルは現在、その UMD パターンを使用して requireJS で完全にロードされています。ただし、何かを変更する必要があるかどうかはわかりません。
  • definition.js と combined.js は、モジュールごとに定義されたID 名を持つモジュールを明示的にロードしています。問題はここにあるかもしれません。

質問

  1. これらの匿名モジュールを1つの結合された.jsファイルに結合し、そのファイルをrequireJSでロードしてからモジュールを取得するにはどうすればよいですか?
  2. コードに何か問題がある可能性がありますか?
  3. requireJS オプティマイザーのドキュメントでは、匿名モジュールのロードをサポートしていると書かれていますが、私はそれを実行できませんでした。モジュールにID名を割り当てずにそれを行うことは本当に可能ですか?

私はそれを解決しようとして完全に絶望的になり、すでに多くのリソースを調べましたが、明確な答えを見つけることができませんでした. どうもありがとう