5

fouc を防ぐために、modernizr を同期的にヘッドにロードしたいと考えています。/bodyの前にrequire.jsを使用して、機能検出などにmodernizrを使用したい他のスクリプトをロードしています。

これを行う正しい方法は何ですか、またはそうすることが推奨されていますか? スクリプトで modernizr が必要な場合は再度読み込まれますが、そうでない場合は未定義です。

前もって感謝します。:)

4

1 に答える 1

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
})
于 2013-05-01T18:41:00.937 に答える