問題タブ [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.
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 オプティマイザーがそのパスからモジュールに名前を付けるため)。
質問
これを解決するためのクリーンで「安価な」方法はありますか (可能であればコードの重複を避けます)?
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つの結合された.jsファイルに結合し、そのファイルをrequireJSでロードしてからモジュールを取得するにはどうすればよいですか?
- コードに何か問題がある可能性がありますか?
- requireJS オプティマイザーのドキュメントでは、匿名モジュールのロードをサポートしていると書かれていますが、私はそれを実行できませんでした。モジュールにID名を割り当てずにそれを行うことは本当に可能ですか?
私はそれを解決しようとして完全に絶望的になり、すでに多くのリソースを調べましたが、明確な答えを見つけることができませんでした. どうもありがとう