我想用 require.js 从另一个域中获取一些 html。我知道 CORS 政策不容易做到这一点。注意:到目前为止,我已经配置了 Web 服务器(使用Access-Control-Allow-Origin "*"和其他指令)和 require.js,以便从其他域加载所有 JS 和 CSS 文件(带有require-css插件的 css)正如预期的那样 - 只是获取 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
});
两个注意事项:useXhr
配置取自require.js 文本插件在文件名中添加“.js”,但是否存在没有区别。我?
在 htmlTemplate 路径中附加了一个。这样,.js
不会将其附加到 URL 并且浏览器会加载 html 内容 - 如前所述,不幸的是,没有 require.js 会将其传递给 parameter htmlTemplate
。
我能做些什么?我已经读过,如果我使用require.js 优化器,生成的文件就不会再出现这个问题了(但是它可以工作......)。但是我需要开发我的 JS 而不对每次编辑进行优化。
更新:找到了一个解决方案,但如果有人能提供“正确”的解决方案,我会很高兴。