本文介绍了了解何时以及如何使用Require.JS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我刚刚开始使用Require.JS,我不太清楚应该在什么适当的情况下使用它,以及在这些情况下的正确使用方法。
下面是我目前如何使用Require.JS进行设置。我有两个函数,functionA()
和functionB()
。这两个函数都需要其他函数functionC()
才能正常工作。
我只想在必要时加载函数C(),即当要调用函数A()或函数B()时。因此,我有以下文件:
functionC.js
functionC(){
//do stuff
}
functionA.js
functionA(){
define(['functionC'],function(){
//functionC() is loaded because it is listed as a dependency, so we can proceed
//do some functionA() stuff
});
}
functionB.js
functionB(){
define(['functionC'],function(){
//functionC() is loaded because it is listed as a dependency, so we can proceed
//do some functionB() stuff
});
}
那么,这个设置正确吗?如果我最终在同一页上同时调用了functionA()和functionB(),那么由于它们都加载了functionC.js文件,是否需要执行额外的工作呢?如果是的话,那有问题吗?如果是这样的话,有没有办法设置它,让他们首先检查是否已经加载了functionC.js,如果还没有加载,则只加载它?最后,这是Require.JS的恰当用法吗?
推荐答案
define()
应仅用于定义模块。对于上面的示例,在需要动态加载一段代码的情况下,使用require()
更合适:
functionA.js
functionA(){
require(['functionC'],function(functionC){
//use funcC in here to call functionC
});
}
注意事项:
require([])
是异步的,因此如果functionA
的调用方期望从该函数返回一个值,则可能会出现错误。最好是functionA
接受在functionA
完成其工作时调用的回调。- 上述代码将为每一次调用
functionA
调用require()
;但是,在第一次调用之后,加载functionC.js
不会受到任何影响,它只加载一次。第一次调用require()
会加载functionC.js
,但是当时的睡觉RequireJS知道它已经加载了,所以不会再次请求functionC.js
就会调用function(functionC){}
函数。
这篇关于了解何时以及如何使用Require.JS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!