2014-01-17 9 views
1

Я хотел бы использовать requireJS. Однако у меня есть lib, который нужно загрузить перед DOM. Однако, это не то, что происходит с requireJSзагрузить файл javascript перед загрузкой с 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, поэтому я могу сразу загрузить конкретный файл (синхронно?)?

+0

Если вам нужно загрузить его синхронно, просто не используйте require.js. Зачем вы хотите использовать его, если вы не хотите загружать асинхронную загрузку? – Pointy

+0

Вы также можете спросить: зачем использовать requirejs вообще (используя, например, атрибут 'defer'). Во всяком случае, я обновил этот пример и добавил зависимость. В этом случае я считаю, что имеет смысл использовать requirejs –

+0

Хорошо, но я уверен, что ответ «нет». Вы можете объявлять зависимости, поэтому, возможно, это поможет. Я не эксперт по требованию, поэтому, надеюсь, кто-то еще знает трюк. – Pointy

ответ

1

Requirejs известен своей асинхронной мощностью. Однако, когда вам нужно что-нибудь вроде того, в котором вы хотите файлы должны быть загружены из-за зависимости, в require.config есть shim конфигурация:

прокладка: Настройка зависимостей, экспорт и пользовательскую инициализация для пожилого , традиционные «браузерные глобальные» сценарии, которые не используют define() для объявления зависимостей и установки значения модуля.

Так скажем, у вас есть позвоночник приложение, которое зависит от Underscore и JQuery, и вы хотите, чтобы загрузить в таком порядке, то ваш будет:

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

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

Итак, RequireJS позволяет использовать shim config, чтобы определить последовательность файлов, которые необходимо загрузить в правильном порядке.

+0

true (я обновил свой пример, потому что он был неправильным). Проблема заключается в том, что до сих пор ничто не было вынуждено загружаться синхронно (до DOM) –

+1

Вы можете просто скопировать сценарий src в dom или посмотреть на это: https://github.com/scriptfoundry/require -синхронный/blob/master/README.md –

+0

проект, о котором вы упоминаете, кажется, не очень сильно –

Смежные вопросы