RequireJS を CMS に統合しているので、これをページ テンプレートの下部に配置しました。
<html>
<body>
{Placeholder1}
<script src="scripts/require.js" data-main="scripts/main"></script>
{Placeholder2}
</body>
</html>
次に、各ページで、RequireJS を活用する関数を作成したいと思います。だから私はこれをページの一番下に置いてみました:
<html>
<body>
<h1>Home</h1>
<div class="slider">Slider content</div>
<script src="scripts/require.js" data-main="scripts/main"></script>
<script type="text/javascript">
require([
'jquery',
'utils',
'slider'
], function ($, utils, slider) {
slider.start();
});
</script>
</body>
</html>
しかし、jquery、utils、slider js ファイルで 404 が発生します。私が持っている main.js 構成を読み取っていないようです:
require.config({
paths: {
jquery: 'libs/jquery-1.8.1.min',
utils: 'libs/utils',
slider: 'libs/jquery.slider.min'
},
shim: {
slider: ['jquery']
}
});
require([ 'utils' ], function (utils) {
utils.init();
});
ページ ヘッドに RequireJS と main を読み込んでみましたが、一貫性のない結果が得られました。jquery、utils、およびスライダーが時間内に読み込まれる場合と読み込まれない場合があります。ページの下部にあるインラインの「require」は、ページ上のメインの RequireJS または依存関係ルールを認識していないかのようですが、私のブレークポイントは main.js でヒットするため、呼び出されていることがわかります。main.js が非同期に読み込まれるのに、ページの下部にあるインラインの "require" ブロックがページ レンダリングで読み込まれるためですか? どうすればこれを回避できますか?
以前に RequireJS を正常に使用したことがありますが、CMS は使用していません。私は常に「定義」を使用し、モジュールを常に非同期で呼び出していましたが、このように RequireJS 関数をインラインで呼び出す必要はありませんでした。これを行う正しい方法に関するアイデアはありますか?