0

私は現在、多数のモジュールをロードするために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 がグローバル ウィンドウ空間に登録されます。

4

0 に答える 0