Javascript 了解何时以及如何使用Require.JS
我刚刚开始使用Require.JS,对于应该在哪些情况下使用Require.JS以及在这些情况下使用Require.JS的正确方式,我有点不清楚 下面是我目前如何使用Require.JS进行设置的。我有两个函数,Javascript 了解何时以及如何使用Require.JS,javascript,requirejs,Javascript,Requirejs,我刚刚开始使用Require.JS,对于应该在哪些情况下使用Require.JS以及在这些情况下使用Require.JS的正确方式,我有点不清楚 下面是我目前如何使用Require.JS进行设置的。我有两个函数,function()和functionB()。这两个函数都需要一个附加函数,functionC()才能正常工作 我只想在必要时加载functionC(),即调用functionA()或functionB()时。因此,我有以下文件: functionC.js functionC(){
function()
和functionB()
。这两个函数都需要一个附加函数,functionC()
才能正常工作
我只想在必要时加载functionC(),即调用functionA()或functionB()时。因此,我有以下文件:
functionC.js
functionC(){
//do stuff
}
functionA(){
define(['functionC'],function(){
//functionC() is loaded because it is listed as a dependency, so we can proceed
//do some functionA() stuff
});
}
functionB(){
define(['functionC'],function(){
//functionC() is loaded because it is listed as a dependency, so we can proceed
//do some functionB() stuff
});
}
functionA(){
require(['functionC'],function(functionC){
//use funcC in here to call functionC
});
}
function.js
functionC(){
//do stuff
}
functionA(){
define(['functionC'],function(){
//functionC() is loaded because it is listed as a dependency, so we can proceed
//do some functionA() stuff
});
}
functionB(){
define(['functionC'],function(){
//functionC() is loaded because it is listed as a dependency, so we can proceed
//do some functionB() stuff
});
}
functionA(){
require(['functionC'],function(functionC){
//use funcC in here to call functionC
});
}
functionB.js
functionC(){
//do stuff
}
functionA(){
define(['functionC'],function(){
//functionC() is loaded because it is listed as a dependency, so we can proceed
//do some functionA() stuff
});
}
functionB(){
define(['functionC'],function(){
//functionC() is loaded because it is listed as a dependency, so we can proceed
//do some functionB() stuff
});
}
functionA(){
require(['functionC'],function(functionC){
//use funcC in here to call functionC
});
}
那么,这个设置正确吗?如果我在同一个页面上同时调用function()和functionB(),那么由于它们都加载了functionC.js文件,是否需要做额外的工作?如果是,这是否一个问题?如果是这样的话,有没有办法设置它,让他们首先检查functionC.js是否已经加载,并且只在没有加载的情况下加载它?最后,这是Require.JS的适当用法吗?define()
应仅用于定义模块。对于上面的示例,在应该动态加载一段代码的情况下,使用require()
更合适:
function.js
functionC(){
//do stuff
}
functionA(){
define(['functionC'],function(){
//functionC() is loaded because it is listed as a dependency, so we can proceed
//do some functionA() stuff
});
}
functionB(){
define(['functionC'],function(){
//functionC() is loaded because it is listed as a dependency, so we can proceed
//do some functionB() stuff
});
}
functionA(){
require(['functionC'],function(functionC){
//use funcC in here to call functionC
});
}
一些注意事项:
是异步的,因此如果require([])
的调用方希望该函数返回值,则可能会出现错误。最好是function
接受在function
完成其工作时调用的回调function
- 上述代码将为每次调用
调用function
;但是,在第一次调用之后,加载require()
不会受到任何惩罚,它只加载一次。第一次调用functionC.js
时,它将加载require()
,但其余时间,RequireJS知道它已经加载,因此它将调用functionC.js
函数,而不会再次请求函数(functionC){}
functionC.js