gpt4 book ai didi

javascript - 在混合基础 url 下动态加载 require.js 模块

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

我们有一个使用 require.js 的应用程序,它同时允许扩展,并且这些扩展的 js 从不同的路径提供。所以在我们的配置中我们有:

var require = {
baseUrl : '/app/js/modules/'
}

但是扩展是从 /extension/foo-extension/js/modules/ 提供的。此外,扩展是动态的,它们将一些 html 注入(inject)到使用 data-module="foo/bar" 的页面中,我们选择它来加载该模块。

理想情况下,我们能够为 require.js 传递/设置上下文,将以下模块加载范围限定在 baseUrl /extension/foo-extension/js/modules/ 内。据我所知,我们需要执行 require('/extension/foo-extension/js/modules/foo/bar') 来加载 foo/bar foo 扩展。

这里有一些伪代码来想象我们需要在哪里处理设置路径/上下文:

define(['some-dep'], function(SomeDep) {
$.get('somepage', function(html) {
var extension = html.data('extension'); // "foo/bar"
var extensionBase = html.data('extensionBase'); // extension/foo-extension/js/modules/

// This is where we need to readjust require to use the base path for any foo module
});
});

这部分是否有另一种解决方案,即走绝对路径路线?

最佳答案

requirejs.config() 可以稍后随时调用,加载程序会将配置合并在一起。所以等到你知道你想为“扩展”的路径配置使用什么,然后通过另一个 requirejs.config() 调用设置它,然后使用该路径加载扩展就足够了。

关于javascript - 在混合基础 url 下动态加载 require.js 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12153701/

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