RequireJS:如何卸载以前加载的javascript文件? Aka独家Dependancies?或者重置RequireJS?

时间:2013-08-29 21:05:15

标签: javascript jquery html requirejs

我有2个不能共存的javascript文件。 如果用户单击一个按钮,则会加载一个js文件。 如果用户单击另一个按钮,则会加载另一个文件。但最后一个需要首先卸载

这通常是我所拥有的:

//pseudocode
if user clicks button one
    loadScript(one);
if user clicks button two
    loadScript(two);

//not psuedocode
function loadScript(name)
{
      var javascriptLoc = name + "/config.js";

      //Unload any scripts that were previously loaded by requirejs
      require.undef(); //HELP

      //once config.js is loaded by requirejs...
      require([javascriptLoc], function(util) {

          //do stuff

      });
}

有没有办法卸载一个/ config.js并加载两个/ config.js 而不是?然后,当用户点击“one”时,它会加载一个/ config.js 而不是两个/ config.js?

提出问题的其他方式:

  • 当我有独家依赖时,我在requirejs中做什么...

  • 如何在requirejs中处理冲突解决 ...

  • 如何重置或卸载以前由requirejs加载的脚本......

1 个答案:

答案 0 :(得分:3)

严格来说,浏览器不允许您卸载JavaScript文件。如果你加载一个文件a.js说:

var a = 345;

JS / HTML中没有可以撤消该命令的命令。 (另请参阅herehere

您可以加载一组新的JS命令来否定第一个文件的效果,例如:

if (typeof a === "undefined") 
   var a = 34;
else
   a = 34;

虽然这开始变得复杂,不是吗?重新设计模块可能更容易,因此不需要重新加载,例如:

function option1() {
}
function option2() {
}

//if user clicks button 1
currentOption = option1();
//if user clicks button 2
currentOption = option2();