gpt4 book ai didi

javascript - 在Requirejs中,我可以用不同的名称注册相同的路径吗?

转载 作者:行者123 更新时间:2023-12-03 11:12:49 24 4
gpt4 key购买 nike

我正在使用 RequireJS 来管理一个应用程序,该应用程序是作为跨文件分割的不确定数量的类来实现的。

该应用程序有一些实用程序类,然后是一些使用实用程序类的消费者类。每个消费者类使用 RequireJS 只加载它需要的实用程序类,并负责自己的 Require 配置。

消费者类彼此不了解,并且整个应用程序不知道每个消费类的需求。它只知道消费者类存在并加载它。问题是,如果两个不同的消费者类定义了相同的路径但名称不同,则第一个消费者类获胜,后续的消费者类超时。

例如,这是一些 utility.js

define( function(){
return function(msg){
console.log(msg);
};
});

这是consumer1.js

require.config({
paths: {
ut1: '/utility'
}
});
require(['ut1'], function(utility){
utility('hello from client1');
})

这是consumer2.js

require.config({
paths: {
ut2: '/utility'
}
});
require(['ut2'], function(utility){
utility('hello from client2');
})

如果独立使用,每个消费者类都可以工作,但是当一起调用时,第二个消费者类会返回错误“模块加载超时:ut2”。

作为应用程序设计模块化性质的一部分,消费者类无法了解彼此的内容,因此我无法强制执行命名规则,也无法拥有中央应用程序级 require.config。如何阻止一个消费者破坏另一个消费者的需求配置?

我想我可以编写一个全局帮助程序来管理名称和路径,对公共(public)路径进行分组并仅返回第一个路径名,但我更喜欢 Require 本身中的更简单的解决方案。

最佳答案

您应该使用map option :

map: {
consumer1: {
ut1: '/utility'
},
consumer2: {
ut2: '/utility'
}
}

然后您就不需要 /utilitypaths 配置。它的作用是告诉 RequireJS 当 consumer1 需要 ut1 时,它应该加载 /utility 模块。当 consumer2 需要 ut2 时,RequireJS 应改为加载 /utility 模块。

关于javascript - 在Requirejs中,我可以用不同的名称注册相同的路径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489157/

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