繁体   English   中英

无法使用RequireJS加载crossroads.js

[英]Unable to load crossroads.js using RequireJS

我尝试使用RequireJS加载JS文件,但是交叉路口http://millermedeiros.github.io/crossroads.js/似乎未正确加载。 我已经使用Chrome开发工具栏进行了检查,并且实际上已加载了所有JS文件。 但是运行window.crossroad返回我未定义

下面是我的requirejs配置。

index.html

<script data-main="scripts/config" src="scripts/require.js"></script>

config.js

require.config({
  shim: {
    "zepto.min": {
      exports: "$"
    },
    "underscore.min": {
      exports: "_"
    },
    "crossroads.min": {
      exports: "crossroads"
    }  }
});

require(["zepto.min","underscore.min", "crossroads.min",], function() {
    console.log("=> Loading app")
    require(["main"]);
});

main.js

require(["hp-config", "hp-model", "hp-view", "hp-controller"], function () {
    console.log("=> Init");
    console.log(window.crossroads);
    //$(document).ready( function(){ HP.C.init(); });
});

如果您查看十字路口的代码,您会发现它检测到它位于AMD环境(RequireJS是)中,并且调用是由自己define的。 因此,您应该卸下它的垫片。 基本规则是:不调用define的库需要填充程序,而调用define的库则不需要。 window.crossroads之所以未定义,是因为crossroads调用是define 而不是将自身导出到全局空间(在window )。

给定您当前拥有的require.config调用,更新后的调用将为:

require.config({
  shim: {
    "zepto.min": {
      exports: "$"
    },
    "underscore.min": {
      exports: "_"
    }
  }
});

上面的配置是所需的最小更改。 但是,我也建议不要在传递给requiredefine的名称中使用.min 因此,您的config.js可能是:

require.config({
  paths: {
    zepto: "zepto.min",
    underscore: "underscore.min",
    crossroads: "crossroads.min"
  },
  shim: {
    zepto: {
      exports: "$"
    },
    underscore: {
      exports: "_"
    }
  }
});

require(["zepto","underscore", "crossroads",], function() {
    console.log("=> Loading app")
    require(["main"]);
});

这样,如果您想切换到非最小版本(用于调试),则只需更改paths设置,而不必到处需要这些模块并更改名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM