使用requirejs在onload之前加载javascript文件

时间:2014-01-17 14:42:57

标签: javascript requirejs

我想使用requireJS。但是,我有一个需要在DOM之前加载的lib。但是,这不是requireJS

所发生的情况
<html>
    <head>
        <script data-main="/app" src="/require.js"></script>
    </head>

    <body>
        <bar-foo/>
    </body>
</html>

使用app.js

require.config({
    paths: {
        'customElement': '/customElement',
        'barfoo': '/barfoo'
    },
    shim: {
        barfoo: {
            deps: [ 'customElement' ]
        }
    }
});
define(['barfoo'], function() {
    ....
}

例如,如果我只是直接在头部加载此脚本(没有requireJS),它可以正常工作。是否有require-config-option,因此我可以立即加载特定文件(同步?)?

1 个答案:

答案 0 :(得分:1)

Requirejs因其异步电源而闻名。但是,当您需要某种由于依赖性而需要加载文件的顺序时,在require.config中有一个shim config:

  

shim:为旧的,传统的&#34;浏览器全局变量配置依赖项,导出和自定义初始化&#34;不使用define()来声明依赖项并设置模块值的脚本。

所以,让我们假设您有一个依赖于Underscore和jQuery的骨干应用程序,并且您希望它们按照该顺序加载,然后您的意愿:

require.config({
paths: {
    'Backbone': '/Backbone',
    'Underscore': '/Underscore',
    'jQuery': '/jQuery'
},
shim: {
    'Backbone': [ 'Underscore', 'jQuery' ]
}
});

require(['Backbone'], function(Backbone){
  //.....
});

因此,RequireJS允许我们使用 shim 配置来定义需要按正确顺序加载的文件序列。