require.js を使用して、別のドメインからいくつかの html を取得したいと考えています。CORS ポリシーではこれが簡単に許可されないことはわかっています。注:すべての JS および CSS ファイル ( require-cssプラグインを使用した css) が他のドメインから読み込まれるように、Web サーバー ( Access-Control-Allow-Origin "*"およびその他のディレクティブを使用) と require.js を構成しました。予想どおり-htmlをフェッチするだけで問題が発生します。しかし、ブラウザーのネットワーク プロトコルでは、html コンテンツも読み込まれていることがわかります。ただし、このコンテンツは require 関数に渡されません! ブラウザはコンテンツを取得しますが、require.js はそれをパラメータとして提供しません...
私の構成:
requirejs.config({
baseUrl: "http://some.other.domain/",
paths: {
jquery: 'ext/jquery/jquery.min',
htmlTemplate: 'test.html?',
siteCss: '../css/site'
},
shim: {
htmlTemplate: [
'css!siteCss'
]
},
config: {
text: {
useXhr: function (url, protocol, hostname, port) {
return true;
}
}
},
map: {
'*': {
text: 'ext/require/text',
css: 'ext/require/css.min'
}
}
});
require(['text!htmlTemplate'], function (htmlTemplate) {
console.log(htmlTemplate); // prints 'undefined' into the console
});
2 つの注意点:useXhr
構成はrequire.js から取得されます。テキスト プラグインはファイル名に「.js」を追加しますが、存在するかどうかに違いはありません。?
htmlTemplate パスにa を追加しました。これにより、.js
は URL に追加されず、ブラウザーは html コンテンツをロードしますhtmlTemplate
。
私に何ができる?require.js オプティマイザーを使用すると、生成されたファイルにこの問題が発生しなくなることを読みました (ただし、機能します...)。しかし、編集ごとに最適化せずに JS を開発する必要があります。
更新:解決策が1つ見つかりましたが、誰かが「正しい」解決策を提供できれば幸いです。