私は、require.js を使用する Web アプリに取り組んでいます。私はアプリとrequirejsの両方にまったく慣れていないので、私が遭遇した問題の最善の解決策は何か疑問に思っていました. PHP インクルード ファイルのスクリプト タグを使用して、サードパーティのユーザー分析/追跡ライブラリを読み込んでいます。php がいくつかの js ランタイム値を設定しているため、これらには requirejs を使用しません。
以下は、そのようなブロックの 1 つの例です。
<script src="//js.revsci.net/gateway/gw.js?csid=A08723"></script>
<script type="text/javascript">
<?php
global $base_url;
$host = parse_url( $base_url, PHP_URL_HOST );
?>
if( typeof DM_cat != 'undefined' ) {
DM_cat('Track');
DM_tag();
}
</script>
このように js と php を組み合わせるのは理想的ではありませんが、すべての分析コードはこのように記述されており、大量に存在します。私はそれをすべてrequirejsの方法でリファクタリングする時間(または知識)がないので、当分の間この構造にこだわっています。現在、これらのサードパーティ スクリプトを「非同期」または「遅延」にするように依頼されています。可能であれば非同期を希望しますが、どちらも許容できる解決策です。だから私はこれを変更したい:
<script src="//js.revsci.net/gateway/gw.js?csid=A08723"></script>
これに:
<script src="//js.revsci.net/gateway/gw.js?csid=A08723" defer></script>
私の質問は、Require を使用してサードパーティのスクリプトをロードし、スクリプトがロードされるまでインライン JavaScript ブロックが実行されないようにするにはどうすればよいですか? 私が書こうとしたコードから、「Mismatched anonymous define() module」エラーが発生し続けます。エラーを読みましたが、意味がわかりません。基本的な例を貼り付けても、そのエラーが発生し続けます。たとえば、次のテスト コードを動作させることさえできません。
define(["testcode"], function(testcode){
window.foo = "bar";
});
define(["foo"], function(){
alert(window.foo); // "bar"
});
エラーメッセージ:
Uncaught Error: Mismatched anonymous define() module: function
(testcode){ window.foo = "bar"; }
このエラーを理解できません。誰かが私を正しい方向に向けるのを手伝ってくれますか? 前もって感謝します!