我目前正在使用 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 将注册到全局窗口空间中。