RequireJS:如何卸载以前加载的javascript文件?又称独家依赖?或者重新设置RequireJS?

RequireJS:如何卸载以前加载的javascript文件?又称独家依赖?或者重新设置RequireJS?,javascript,jquery,html,requirejs,Javascript,Jquery,Html,Requirejs,我有两个不能共存的javascript文件。 如果用户单击一个按钮,它将加载一个js文件。 如果用户单击另一个按钮,它将加载另一个文件。但最后一个需要先卸载 以下是我的大致情况: //pseudocode if user clicks button one loadScript(one); if user clicks button two loadScript(two); //not psuedocode function loadScript(name) { v

我有两个不能共存的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?然后,当用户单击“一”时,它将加载一个/config.js而不是两个/config.js

其他表达问题的方式:

  • 当我有排他依赖项时,我在requirejs中做什么

  • 如何处理requirejs中的冲突解决

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


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

var a = 345;
JS/HTML中没有可以撤消该操作的命令。(另见,和)

您可以加载一组新的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();
但这开始变得复杂了,不是吗?重新设计模块可能更容易,因此无需重新加载,例如:

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();

…除了RequireJS,我还需要使用其他方法吗(其他脚本加载器也无法卸载脚本。:(重点是使这些脚本文件共存。有各种方法可以沙盒脚本文件的内容。是否不删除实际的脚本标记卸载相关脚本文件?