gum*_*mpg 5 javascript require requirejs
当有两个文件导入相同的模块时,它似乎共享相同的资源,如下所示:
main.js:
require(['cmdA', 'cmdB'], function(cmdA, cmdB){
})
Run Code Online (Sandbox Code Playgroud)
cmdA.js:
define(function(require, exports){
console.log('require: cmdA');
var body = require('body');
});
Run Code Online (Sandbox Code Playgroud)
cmdB.js:
define(function(require, exports){
console.log('require: cmdB');
var body = require('body');
});
Run Code Online (Sandbox Code Playgroud)
结果:
require body
require: cmdA
require: cmdB
Run Code Online (Sandbox Code Playgroud)
那么为什么不呢:
require body
require: cmdA
require body
require: cmdB
Run Code Online (Sandbox Code Playgroud)
我认为body.js需要两次,所以控制台输出两次.为什么?
默认情况下,RequireJS将模块视为单例.一旦RequireJS执行了它的名称解析并发现你想要模块,X那么如果你需要它一次,两次,三百万次,你将总是获得相同的模块对象.第一次需要该模块时,会创建该模块,然后在下次再次需要该模块时,您将获得与第一次返回的模块相同的模块.你给的回调define只调用一次,而且只调用一次.
如果您使用requirejs.undef,您可以欺骗RequireJS为您提供模块的多个副本,但这不是基本用法.
| 归档时间: |
|
| 查看次数: |
2975 次 |
| 最近记录: |