gpt4 book ai didi

javascript - 使用 Require.js 的跨域模块不为子模块添加 ".js"

转载 作者:行者123 更新时间:2023-11-30 17:25:36 25 4
gpt4 key购买 nike

我无法让跨域模块在 require.js 中工作

我在 othersite.com 上有一个子模块

// othersite.com/js/submodule.js
define(function() {
return { test: "Submodule here!" };
});

和 othersite.com 上使用该子模块的模块

// othersite.com/js/mainmodule.js
define(['./submodule'], function(SubModule) {
return {
test: "Main Module Here" + SubModule.test,
};
});

现在在 mainsite.com 上我有一个模块试图引用 othersite.com 上的 mainmodule。

// mainsite.com/js/app.js
requirejs([
'./somelocalmodule',
'./someotherlocalmodule',
'http://othersite.com:1234/js/mainmodule.js',
], function(
SomeLocalModule,
SomeOtherLocalModule,
MainModule) {
console.log("test: " + MainModule.test);
});

问题是当 require.js 尝试加载 submodule.js 时它失败了,因为它结合了 mainmodule.js 的 URL。所以 ./submodule 变成了 http://othersite.com:1234/js/submodule。然后 require.js 中的代码检查该 URL,发现其中有一个冒号,决定不添加 .js 并尝试加载 http://othersite.com:1234/js/submodule 当然没有 .js 不存在,这意味着它无法加载 submodule.js

我可以将 .js 添加到 mainmodule.js 中的 ./submodule 但这种做法破坏了整点,即如果我有一些大的集合文件以推荐的方式使用 require.js,没有 .js 后缀,然后我尝试引用那些跨域,我必须将 otherdomain.com 上的所有文件更改为非标准文件。

我做错了什么吗?有没有办法让 require.js 处理这种情况?

最佳答案

添加配置路径为我解决了这个问题

在我的 html 中

<script data-main="/js/app.js" src="/js/require.js"></script>
<script>
requirejs.config({
paths: {
othersite: '//othersite.com:1234',
},
});
</script>

然后在mainsite.com/js/app.js

// mainsite.com/js/app.js
requirejs([
'./somelocalmodule',
'./someotherlocalmodule',
'othersite/js/mainmodule.js',
], function(
SomeLocalModule,
SomeOtherLocalModule,
MainModule) {
console.log("test: " + MainModule.test);
});

关于javascript - 使用 Require.js 的跨域模块不为子模块添加 ".js",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24350691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com