問題タブ [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 - 「$.widget が定義されていません」requirejs ビルド後
jquery.selectBoxItをロードするためにrequirejsを使用しています。jQueryUI ウィジェット ファクトリを使用するため、jQueryUI 公式サイトからプロジェクトにウィジェット ファクトリのみをロードしました。
プロジェクトが config.js で読み込まれると、selectBoxIt は問題なく実行されます。しかし、r.js でプロジェクトをビルドすると、エラーが発生します$.widget is not defined
。
助けてください修正してください。
PS。私はすでにいくつかのGoogleの結果を読んでいますが、何も役に立ちません.
config.js
module.js
selectBoxIt コードの行にエラーが表示される
requirejs - r.js で最適化されていないファイルを使用する
次のオプティマイザ設定を使用してデュランダル ビルドを最適化しています。
私の問題は、最適化から除外し、最適化されていないバージョンとして使用したい に があることですconfig.js
。requireConfig.paths
その理由は、最適化されたファイルを掘り下げることなく、ビルドの構成ファイルを変更できるようにしたいからです。
exclude
とを試しempty:
ましたが、最適化された js ファイルから構成を除外するだけです。「リモート」ファイルとして含めるにはどうすればよいですか?
config.js:
javascript - Durandal ビルドでファイルを最適化から除外する
私は Grunt を使用してDurandal スターター キットのプロパッケージをビルドしています。
1 つの小さな詳細を除いて、すべて正常に動作します。1 つのファイル (以下) をオプティマイザーから除外app-config
し、ビルドが完了したときに縮小されていないファイルとして保持したいと考えています。
他の SO スレッドの提案に基づいて、現在、を使用して除外していempty:
ます。これにより、期待どおりに最適化されたファイルから削除されます。ただし、ビルドされたプロジェクトを開くと、コンソールにエラーが表示されます。
Uncaught Error: main missing app-config
問題はアーモンド?を使用して完全なrequirejsに切り替えてみましたが、include: ['path/to/require']
成功しませんでした。
ローカルで再現したい場合は、上記のリンクからスターター キットをダウンロードするか、私の例に近いわずかに構成されたバージョンを使用できます。フォルダー内で実行するだけで、npm install
すべて設定されます。
javascript - RequireJS オプティマイザーのハード インクルード
1 つではなく 2 つのバンドルにバンドルしたい大規模なクライアント側プロジェクトがあります。
これは私の依存関係ツリーです:
望ましい出力は、これらのバンドルを持つことです。
main
含むb
x
これにはa
(b
最初のバンドルにすでに含まれており、ユーザーがコードを複数回ダウンロードすることは望ましくありません)。
これが私のオプティマイザ構成です。
main
の依存関係ツリー全体から除外したいのですx
が、明示的に必要なモジュール ( a
.
そんなこと知ってる:
include
— 直接必要のないモジュールとその依存関係ツリー全体を明示的に含めます。exclude
— モジュールを除外すると、実際にはその依存関係ツリー全体が除外されinclude
、競合が発生した場合にオーバーライドされます。excludeShallow
—モジュール自体を含まず、モジュールの依存関係ツリーを含みます。
それを持っていると、私が望むものを達成するための明確な方法がわかりません。助けてもらえますか?
gulp - requirejs オプティマイザー - 最適化されたモジュール名を変更する方法
一部のモジュールを requirejs オプティマイザーで最適化したいのですが、パスに関する問題が発生しました。main.js
エントリ ポイントには のコンポーネントが必要です/build/modules/
が、最適化されたモジュールの名前がこのパスと一致しません。コンポーネント ファイルは読み込まれますが、定義されている関数は呼び出されません。
main_component.js
にはコンポーネントmoduleA
とが必要でmoduleB
、にはビルド済みbuild
のが必要です。main.js
main_component.js
のコード./build/main.js
:
のコード./build/modules/main_component
:
プロジェクトの構造:
また、gulp wrapper を使用していますgulp-requirejs-optimize
。これは私のgulpfileです:
javascript - requirejs の最適化後に jQuery.ui が未定義
私の Web アプリケーションには<script>
、相対的な依存関係の順にタグを介して以前に読み込まれたいくつかの JavaScript ファイルがあります。現在、require.js を使用してそれらを再編成し、それらを蓄積して本番用に縮小しています。
手始めに、AMD カプセル化をまだ行わずに、すべてのファイルをグローバル (ウィンドウ) コンテキストに単純にロードしたいと思います。
ここでの考え方'jquery'
は、グローバル (ウィンドウ コンテキスト)jQuery
変数を定義し、 (より良いタッチ サポートのために)'jquery-ui'
セットjQuery.ui
と'jquery-ui.touch-punch'
変更を行うというものです。jQuery.ui
これは、そのまま実行する場合、つまり最適化なしで実行する場合にうまく機能します。ただし、1 つのファイルにコンパイルし、RequireJS オプティマイザーを使用して縮小すると、次のエラーが発生します。
これは、 にアクセスしようとしている回線で発生しますjQuery.ui.mouse
。
ブラウザ コンソール内でjQuery
は、ウィンドウ コンテキストで正しく設定されていますが、jQuery.ui
未定義です。ただし、手動で実行すると、期待どおりrequire(['jquery-ui'])
に設定jQuery.ui
されます。
最適化後に jQuery UI の動作が異なるように見えますが、その正確な方法や理由はわかりません。私は何を間違っていますか?
node.js - 非同期フックが終了するまで Cordova を待機させる
私の Cordova プロジェクトには、RequireJS 最適化 (r.js) を実行するフックがありafter_prepare
ます。この最適化は本質的に非同期であるため、すべての最適化が完全に終了する前にフック コードが返されます。
たとえば、これにより、実行時に問題が発生しますcordova run browser
。最初のページの読み込み時に、最適化がまだ完了しておらず、サイトが壊れているように見えます。
特定のフックがコールバックを起動するまで Cordovoa ビルド プロセスをブロックする方法はありますか? または、オプティマイザーをブロック/同期の方法で実行できますか?
私が考えることができる代替案は、最適化に別のプロセスを使用し、主にそれが完了するまでビジー待機することですが、それはやり過ぎで悪い習慣のように思えます。