本文介绍了了解何时以及如何使用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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 14:21