fouc を防ぐために、modernizr を同期的にヘッドにロードしたいと考えています。/bodyの前にrequire.jsを使用して、機能検出などにmodernizrを使用したい他のスクリプトをロードしています。
これを行う正しい方法は何ですか、またはそうすることが推奨されていますか? スクリプトで modernizr が必要な場合は再度読み込まれますが、そうでない場合は未定義です。
前もって感謝します。:)
fouc を防ぐために、modernizr を同期的にヘッドにロードしたいと考えています。/bodyの前にrequire.jsを使用して、機能検出などにmodernizrを使用したい他のスクリプトをロードしています。
これを行う正しい方法は何ですか、またはそうすることが推奨されていますか? スクリプトで modernizr が必要な場合は再度読み込まれますが、そうでない場合は未定義です。
前もって感謝します。:)
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
})