Как предотвратить загрузку Knockout.js с помощью requirejs?

В настоящее время я использую requirejs для загрузки большинства модулей, но мне нужно загрузить один скрипт Knockout.js старомодным способом, используя:

<script src='/path/to/knockout.js' ></script>

У меня проблема с этим, когда страница отображается, я вижу эту разметку:

<script async="async" type="text/javascript" src="knockout.min.js"></script>

Но я не хочу загружать нокаут с помощью require.js.

Как отключить загрузку с помощью require.js для указанного скрипта?


Я НАШЕЛ РЕШЕНИЕ:

Покопавшись в исходниках knockout, я нашел интересный кусок кода, который определяет наличие require.js и автоматически прописывает модуль в require. Вот виновный кусок кода:

    // Support three module loading scenarios
if (typeof require === 'function' && typeof exports === 'object' && typeof module === 'object') {
    // [1] CommonJS/Node.js
    var target = module['exports'] || exports; // module.exports is for Node.js
    factory(target);
} else if (typeof define === 'function' && define['amd']) {
    // [2] AMD anonymous module
    define(['exports'], factory);
} else {
    // [3] No module loader (plain <script> tag) - put directly in global namespace
    factory(window['ko'] = {});
}

Вы можете изменить, как хотите (например, вы можете заменить function чем-то другим), чтобы добиться выполнения последней else ветки кода, и в результате ko будет зарегистрирован в глобальном пространстве окна.


person testCoder    schedule 31.07.2013    source источник
comment
Включить require.js после включения Knockoutjs?   -  person Benjamin Gruenbaum    schedule 31.07.2013
comment
Я не могу этого сделать, я разрабатываю дополнение к внешнему веб-приложению, которое не позволяет изменить его код. Объявления моих js-скриптов, за которыми следует объявление скриптов системы, которую я расширяю. Я не могу изменить этот порядок. Существует ли другое решение?   -  person testCoder    schedule 31.07.2013
comment
расскажите подробнее о том, как загружаются скрипты, которые на самом деле используют нокаут. Если ваша цель состоит в том, чтобы убедиться, что объект ko находится в глобальном пространстве имен, есть способы сделать это в рамках requirejs: stackoverflow.com/questions/17575048/   -  person explunit    schedule 31.07.2013
comment
Что касается вашего решения, я нашел решение: теперь вам нужно вручную объединить свои настройки с нокаутом, когда они выходят с новыми версиями. См. ссылку, которую я разместил в комментарии выше, чтобы узнать, как лучше решить проблему с глобальным пространством имен.   -  person explunit    schedule 01.08.2013