問題タブ [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 - 埋め込まれた ember-cli プロジェクトが RequireJS と競合する
RequireJS ライブラリを広く使用する大規模なポータル アプリケーションに EmberJS アプリケーションを埋め込もうとしています。プロジェクトのビルドには ember-cli を使用しています。ビルドされたアプリケーションは、2 つのファイルdist/assets/vendor.js
とdist/assets/myapp.js
. EmberJS アプリケーションは埋め込み後に機能しますが、ポータル アプリの JavaScript が壊れます。
いくつかの調査の結果、問題は、グローバル名前空間の Web サイトの変数と競合するvendor.js
独自の変数require
、requirejs
、requireModule
およびを定義することであることがわかりました。define
このmyapp.js
ファイルにはdefine
、アプリのモジュールをロードするステートメントが含まれています。
これらの名前を変更したり、別の名前空間に配置したりする方法はありますか?
私が思いついた唯一の解決策は、2 つの.js
ファイル内の変数の名前を手動で変更することでした。これは機能しているように見えますが、かなり面倒なので、自動化できればいいと思います。RequireJS オプティマイザーの使用についても知りましたが、vendor.js
ファイルで動作させることができません。
手伝って頂けますか?ありがとう!
requirejs - 依存関係のリストを含む変数を define() に渡すと、最適化が失敗する
スクリプトを縮小せずにデバッグ モードでサイトを実行している場合、次のように動作します。
しかし、コードが縮小されるとすぐに動作しなくなります。なぜなのかご存知ですか?
これが機能することに注意してください:
配列を使用する理由は、配列をループして「template」を「template.1010101010」に置き換えたいからです。ここで、10101010101 はファイルの作成に基づくタイムスタンプです。このようにファイルを維持することで、自動的にファイルの更新時にキャッシュをバイパスします。
ループするファイルが他にもあることに注意してください。
playframework - Play Framework - RequireJS オプティマイザーの問題
PlayFramework 2.3 プロジェクトがあり、クライアント側で require.js を使用しています。
私が実行すると、activator run
すべてが正常に動作します(したがって、require の依存関係は問題ないと確信しています)。しかし、 を実行activator start
すると、依存関係の一部が失われます。
プレイのドキュメント ( here ) では、次のように述べています。
RequireJS オプティマイザは、一般に、デプロイメントを実行する時まで、つまり start、stage、または dist タスクを実行するまで起動しないでください。
したがって、オプティマイザは実行中に実行され、実行中には実行さstart
れません。これが、実行run
中にすべてが正常に機能する理由を説明していactivator run
ます。
それで、オプティマイザーを構成したり、実行時に無効にしたりする方法はありますactivator start
か?
gruntjs - requirejs の実行時に gruntfile.js に複数の出力ファイルを含める方法
grunt-contrib-requirejs の Gruntfile.js では、1 つのタスクしか登録できず、1 つの出力ファイル、つまり home_scripts.pack.js しか持つことができません。ただし、さまざまな「インクルード」基準に基づいて、必要な数の出力ファイルが必要です。たとえば、home_scripts.pack.js、checkout_scripts.pack.js、product_scripts.pack.js などです。このようにして、各ページは以下を使用する JS のみをロードします。
これは無効ですが、似たようなことをしたいです:
上記のアスタリスクが付いたコードは、ページごとに異なる出力ファイルを生成したいコードです。ただし、grunt を使用して requireJS オプティマイザーを介して多数の JS プラグイン ファイルとモジュールを生成およびロードするより効率的な方法がある場合は、提案をお待ちしています。
ありがとう、
javascript - RequireJS Optimizer で Javascript ファイル以外をすべて除外する
gulp レシピで RequireJS オプティマイザーを使用してモジュールをコンパイルおよび連結していますが、bower.json や *.nuspec ファイルなどの冗長なサードパーティ ライブラリ ファイルが出力ディレクトリにコピーされています。
次の式を使用して、requirejs.optimize オプション オブジェクトで fileExclusionRegExp を使用して、完全なディレクトリを除外することに成功しました。
/^\.|^styles$|^templates$|^tests$|^webdriver$/
.js
ただし、ファイル拡張子以外をすべて除外する方法がわかりません。以下を使用できます。
/^\.|.json$|.nuspec$|^styles$|^templates$|^tests$|^webdriver$/
特定の拡張機能を除外するためですが、新しいタイプが後で表示された場合は、正規表現に気付き、変更する必要があります。また、正規表現はおそらく手に負えなくなり、維持するのが難しくなります。私は次の表現を使用しようとしました:
/^\.|!js$|^styles$|^templates$|^tests$|^webdriver$/
/^\.|!.js$|^styles$|^templates$|^tests$|^webdriver$/
/^\.|^.js$|^styles$|^templates$|^tests$|^webdriver$/
/^\.|[^.js$]|^styles$|^templates$|^tests$|^webdriver$/
/^\.|[^.js]$|^styles$|^templates$|^tests$|^webdriver$/
結果は、何もしないこと (最初の 3 つ、ビルドを壊すこと、最後の 2 つ) から、だれかが提供できる助けがあれば幸いです。
ありがとう
requirejs - r.js オプティマイザと Underscore _.template() 関数に関する問題
_.template()
最適化されたビルドを作成した後、アンダースコア (古いバージョン [1.3.3] を使用しており、このプロジェクトには他のバージョンを使用できません) 機能に問題があります。
最適化した後、すべての初期モジュールを含むファイルができました。アンダースコア (jQuery など) も shim を介してそこに配置されます。テンプレート ファイルは関数によって除外さonBuildWrite()
れ、動的に読み込まれます。
しかし、大きな問題があります。最適化後_.template()
は正しく機能しません。複数行を評価することはできません (ただし、単一行のコードは場合によっては正常に評価されます [すべてを確認することはできません]) テンプレート ファイル内の JS。したがって、たとえば、このテンプレート ファイルを解析できません。
「Uncaught ReferenceError: subsIconsNames が定義されていません」
しかし、最適化をしなくても問題なく動作します。
ご清聴ありがとうございました。
requirejs - RequireJS baseUrl と複数の最適化ファイル
アプリ コードからサード パーティのライブラリを分離し、requirejs がプルできるようにそれらをすべて 1 つのファイルvendor.js
にbuild.js
グループ化しました。ファイルをmodules
最適化しvendor.js
ます。私が抱えている唯一の問題は、コンパイルされたmain
モジュールが要求するときです。構成ファイルからvendor
取得しているbaseUrl
ため、最適化されたファイルをロードしませんvendor.js
。私のbuild.js
ファイルは次のようになります。
そして、私のmain.js
ファイルは次のようになります。
すべての開発はjs
フォルダー内で行われ、私のbuild.js
ファイルはそのフォルダーの外にあります。最適化されたファイルはbuild
、 の兄弟である になりjs
ますが、メイン ファイルを次のように含めると、次のようになります。
js/vendor.js
そのdefine()
呼び出しの読み込みが終了します。ここで何が欠けていますか?main
代わりに最適化されたファイルをロードするように指示し、最適化されbuild/vendor.js
ていないバージョンを引き続きロードできるようにするにはどうすればよいjs/vendor.js
ですか?