我想在头部同步加载modernizr以防止犯规。我在before / body之前使用require.js来加载一些其他脚本,其中我想使用modernizr进行特征检测等等。
这样做的正确方法是什么,或者甚至建议这样做? 如果我在我的脚本中需要modernizr它会再次加载,如果我不这样做,则它是未定义的。
提前致谢。 :)
答案 0 :(得分:9)
如果Modernizr是头部加载的第一个脚本,则可以从任何地方访问它,因此您可以像这样定义简单的包装:
define('modernizr', function () { return window.Modernizr });
此代码可以放在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>
然后在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
})