В настоящее время я использую 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 будет зарегистрирован в глобальном пространстве окна.
ko
находится в глобальном пространстве имен, есть способы сделать это в рамках requirejs: stackoverflow.com/questions/17575048/ - person explunit   schedule 31.07.2013