RequireJS を使用して KnockoutJS プラグインである KnockoutFire を読み込もうとしています。1つのファイルのみです: https://github.com/hiroshi/knockoutFire/blob/master/knockoutFire.js
プラグインは次の 2 つのことを行います。
- グローバル変数「KnockoutFire」を定義します
- コア KnockoutJS ("ko") lib を拡張します
したがって、このライブラリを適切にロードするには、グローバル変数「ko」を介して KnockoutJS にアクセスできる必要があります。問題は、適切な AMD を使用して KnockoutJS をロードしていて、KnockoutFire が参照できるグローバルな「ko」がないことです。ライブラリと他のさまざまなトリックの両方をシミングして動作させようとしましたが、困惑しています。すべてがエラーを生成します:
ReferenceError: ko is not defined
これが私が取り組んでいるものです:
require.config({
enforceDefine: false,
baseUrl: 'assets/js/',
paths: {
'knockout': '//ajax.aspnetcdn.com/ajax/knockout/knockout-2.2.1'
},
shim: {
'knockout': { exports: 'ko' },
'knockoutfire': { exports: 'KnockoutFire', deps: ['knockout'] }
},
waitSeconds : 15
});
require(['knockoutfire'], function() {
log(KnockoutFire);
});
私も次のような奇妙なことをしようとしました:
require(['knockout'], function(ko) {
require(['knockoutfire'], function(kofire, ko) {
log(KnockoutFire);
});
});
または:
define(['knockout'], function(ko) {
require(['knockoutfire'], function(ko) {
log(KnockoutFire);
});
});
サードパーティのライブラリをダウンロードしてこれを追加すると:
define(['knockout'], function(ko) {
<!--- third party lib --->
});
すべて正常に動作します。
サードパーティのライブラリを変更せずに同じ結果を達成する方法はありますか?