我对 RequireJS 和 Modernizr 有疑问。
我希望 Modernizr 资源在头部。以及体内的其他一切。原因是 Modernizr 需要在 DOMContentLoad 之前做一些事情。我希望能够使用 RequireJS 将 Modernizr 模块加载到其他模块中。我怎样才能在开发和生产环境中做到这一点?我使用 requirejs 来提取所有依赖项并缩小所有资源。 yeoman 构建替换了 <script data-main="scripts/main" src="scripts/vendor/require.js"></script>
缩小版。
正文标签下:
<!-- 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 - 这将创建一个 window.Modernizr 变量。
最后,在您的引导需求之前,定义 modernizr 模块
define('modernizr', [], Modernizr); require(['foo', 'bar', 'modernizr'], function(foo, bar, modernizr) { //..profit }
关于javascript - 在 RequireJS 中包含 Modernizr,并在 head 标签中包含 Modernizr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13451661/