質問:AMDサポートを使用して(コンパイラを介して)jqueryをTypeScriptモジュールにインポートして、依存関係としてjqueryを含める方法はありますか?
重要なのは、インポートステートメントを取得することです。これにより、モジュールが定義ステートメントの依存関係になります(以下を参照)。
define(["require", "exports", 'dataservice', 'jquery', 'knockout'],
function(require, exports, __ds__, $ , ko) {
...
}
)
詳細:jquery(およびその他のサードパーティライブラリ)をAMDでTypeScriptモジュールとしてインポートしたい。目標は、それらを依存関係としてrequire
リストに表示することです。ただし、これを行うためにTypeScriptを作成する唯一の方法は、import
ステートメントを持つことであるように見えます。また、インポートするには、インポートするモジュールが必要です。しかし...ポイントするjqueryモジュールはありません。に。
回避策:
- require.jsのmain.jsで.d.tsとプリロードjqueryを参照できますが、それはすべてのサードパーティライブラリをプリロードすることを意味します。ひどいわけではありませんが、JavaScriptとAMDですでに実行できることを利用していないため、理想的でもありません。
- サードパーティのライブラリごとにモジュールを作成してラップすることはできますが、$。$のようなものが得られます。さらに悪いことに、IMO(およびIriskがこれらのそれぞれに間違ったモジュールコードを記述し、同期がとれていない)。
したがって、今のところ、main.jsにjqueryをプリロードしているだけです。しかし、繰り返しますが、これは理想的とは言えません。モジュールを持たないノックアウト、バックボーンなどのライブラリに対してこれを行う必要があります。
より良い提案や私が欠けているものはありますか?
更新/明確化:
ライブラリ間の依存関係については、構成でシムを使用することもできます。ただし、これでもサードパーティのものがプリロードされます。例:
require.config({
baseUrl: '../',
paths: {
'jquery': 'lib/jquery-1.7.2',
'underscore': 'lib/underscore'
},
shim: {
jquery: {
exports: '$'
},
underscore: {
exports: '_'
}
}
});