gpt4 book ai didi

javascript - 为什么 RequireJS 不多次加载我需要多次的模块?

转载 作者:数据小太阳 更新时间:2023-10-29 06:02:01 27 4
gpt4 key购买 nike

当有两个文件导入同一个模块时,看起来共享同一个资源,像这样:

ma​​in.js:

require(['cmdA', 'cmdB'], function(cmdA, cmdB){

})

cmdA.js:

define(function(require, exports){
console.log('require: cmdA');
var body = require('body');
});

cmdB.js:

define(function(require, exports){
console.log('require: cmdB');
var body = require('body');
});

结果:

require body 
require: cmdA
require: cmdB

那为什么不呢:

require body
require: cmdA
require body
require: cmdB

我认为 body.js 需要两次,所以控制台输出两次 body。为什么?

最佳答案

默认情况下,RequireJS 将模块视为单例。一旦 RequireJS 完成名称解析并发现您需要模块 X ,那么如果您需要它一次、两次、三百万次,您将始终获得相同的模块对象。第一次需要该模块时,它会被创建,然后下次再次需要时,您将获得与第一次返回的模块相同的模块。您给 define 的回调被调用一次,而且只调用一次。

如果您使用 requirejs.undef ,您可以欺骗 RequireJS 为您提供模块的多个副本,但这不是基本用法。

关于javascript - 为什么 RequireJS 不多次加载我需要多次的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22410897/

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