私は現在、多数のモジュールをロードするためにrequirejsを使用していますが、次を使用して昔ながらの方法で単一のスクリプトのノックアウト.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 がグローバル ウィンドウ空間に登録されます。