将modernizr加载到head中,但在require.js中使用它

sha*_*fta 5 javascript modernizr requirejs

我想在头部同步加载modernizr以防止出现问题.我在before/body之前使用require.js来加载一些其他脚本,其中我想使用modernizr进行特征检测等等.

什么是正确的方法或甚至建议这样做?如果我在我的脚本中需要modernizr它会再次加载,如果我不这样做,它是未定义的.

提前致谢.:)

And*_*min 9

如果Modernizr是头部加载的第一个脚本,那么它可以从任何地方访问,因此您可以像这样定义简单的包装器:

define('modernizr', function () { return window.Modernizr });
Run Code Online (Sandbox Code Playgroud)

这段代码可能放在wrappers.js这里:

<head>
<script src="/js/vendor/modernizr.js"></script>   
<script src="/js/vendor/require.js"></script>  
<script src="/js/wrappers.js"></script>  
<script src="/js/main.js"></script>
</head>
Run Code Online (Sandbox Code Playgroud)

然后在main.js

var scripts = document.getElementsByTagName('script')
  , src = scripts[scripts.length - 1].src
  , baseUrl = src.substring(src.indexOf(document.location.pathname), src.lastIndexOf('/'))

require.config({
  baseUrl: baseUrl
})
Run Code Online (Sandbox Code Playgroud)