使用带有retinajs的requirejs

时间:2014-03-13 16:40:47

标签: javascript jquery requirejs

我正在使用requirejs并且正在调用retinajs作为插件。我正在使用垫片和jQuery依赖:

....
'plugins/retina.min': {
        'deps': ['jquery']
    }
....

然后我启动我的应用程序:

requirejs(['./main'], function(App) {
    App.init();
});

" main.js":

define(['jquery', 'foo', 'bar', 'plugins/domReady!', 'plugins/retina.min'], function($, foo, bar, retina) {....});

我页面上的我的徽标正在更新,但似乎我遇到了计时问题。在页面下方(甚至后续页面视图),脚本将在页面准备好之前执行。

Retina.js自动执行,因此没有一种方法可以按照说法进行初始化。有没有办法去打电话"一个jquery插件,可以使用require js自动执行吗?

这是错误的,但我认为这与我需要的一致:

define(['jquery', 'foo', 'bar', 'plugins/domReady!', 'plugins/retina.min'], function($, foo, bar, retina) {
    var App = {
        init: function() {

           retina.init(); // This doesn't exist
           <script src="/plugins/retina.js"></script> // Not even close to valid, but this is what I need.
         }

     };
    return App;
});

感谢您的时间和建议!

1 个答案:

答案 0 :(得分:2)

试试这个:

define(['jquery', 'foo', 'bar', 'plugins/domReady!'], function($, foo, bar) {
    var App = {
        init: function() {
            require(['plugins/retina.min'], function(){
                // This is straight from retina.js's source: https://github.com/imulus/retinajs/blob/master/src/retina.js#L142
                if (Retina.isRetina()) {
                    Retina.init(window);
                }
            });
         }
     };
    return App;
});