2

我有 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 加载的脚本...

4

1 回答 1

3

严格来说,浏览器不允许您卸载 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();
于 2013-09-04T17:46:28.523 回答