我有RequireJS和Modernizr的問題。在RequireJS中包含Modernizr並且在頭部標記中包含Modernizr
我想Modernizr資源在頭上。和身體的其他一切。原因是Modernizr需要在DOMContentLoad之前做一些事情。我希望能夠使用RequireJS將Modernizr模塊加載到其他模塊中。我如何在開發和生產環境中實現這一目標?我使用requirejs來拉取所有的依賴關係並縮小所有的資源。並且yeoman版本用縮小版本取代<script data-main="scripts/main" src="scripts/vendor/require.js"></script>
。
body標籤下:
<!-- build:js ikl.app.js -->
<script data-main="scripts/main" src="scripts/vendor/require.js"></script>
<!-- endbuild -->
<script>
requirejs.config({
paths: {
'jquery' : 'vendor/jquery',
'handlebars' : 'vendor/handlebars',
'ember' : 'vendor/ember',
'ember-data' : 'vendor/ember-data',
'modernizr' : 'vendor/modernizr' // This should be removed
},
baseUrl: 'scripts',
shim: {
'jquery' : {
exports : 'jQuery'
},
'ember': {
deps: ['jquery', 'handlebars'],
exports: 'Ember'
},
'ember-data': {
deps: ['ember'],
exports: 'DS'
},
'handlebars': {
exports: 'Handlebars'
},
'modernizr': {
exports: 'Modernizr'
}
}
});
require([
'modules/system/controllers/system.controller',
'jquery',
'ember',
'ember-data',
'handlebars',
'modernizr'
],
function(systemController) {
systemController.renderView();
}
);
</script>
爲什麼不直接加載Modernizr的同步在頭一個腳本元素?您可能希望頁面等待Modernizr運行,以便所有CSS類等都存在,並且您不會因爲各種css類別突然啓動而產生難看的「風格跳躍」。 –
在性能上有所提升身體標籤。它比使用JS邏輯更快地呈現HTML。我想盡可能少的JS邏輯在頭上 – einstein
flash-of-unstyled-content是一個令人信服的論點,不要在Modernizr本身加載之前呈現HTML。再想一想。 –