2012-12-28 12 views
11

質問:jqueryを依存関係として含むようにAMDサポートを使用してTypeScriptモジュールにjqueryをインポートする方法はありますか?jQueryとその他のサードパーティ製ライブラリをTypeScriptにモジュールを使用してモジュールとしてインポートする

キーはimportステートメントを取得することで、モジュールをdefineステートメント(以下を参照)に依存させます。

define(["require", "exports", 'dataservice', 'jquery', 'knockout'], 
    function(require, exports, __ds__, $ , ko) { 
     ... 
    } 
) 

詳細: 私はjqueryの(および他のサードパーティのライブラリ)をインポートするAMDと活字体モジュールなど。目的は、それらをrequireリストの依存関係として表示させることです。しかし、これを行うTypeScriptを作成する唯一の方法は、importステートメントを持つように見えます。また、インポートするにはモジュールをインポートする必要があります。しかし、... jqueryモジュールは指摘できません。 to。回避策

  1. 私はrequire.jsためmain.jsで.d.tsとプリロードjqueryのを参照することができますが、それは、すべてのサードパーティのライブラリをプリロードを意味します。ひどいわけではありませんが、JavaScriptやAMDですでにできることを利用していないので、理想的ではありません。
  2. 各サードパーティライブラリのモジュールを作成してラップすることができますが、$。$のようなものがあります。どちらがさらに悪いのですか?IMO(とIriskはそれぞれのモジュールコードを間違って記述して同期を外しています)。

今のところ、main.jsにjqueryをプリロードしています。しかし、これは理想的ではありません。モジュールを持たないノックアウトやバックボーンなどのライブラリであれば、そうする必要があります。

私が迷っているものはありますか?

更新/明確化:

私はまた、ライブラリの中で依存関係を設定してシムを使用することができます。しかし、これはまだサードパーティのものをプリロードします。例:

require.config({ 
    baseUrl: '../', 
    paths: { 
     'jquery': 'lib/jquery-1.7.2', 
     'underscore': 'lib/underscore' 
    }, 
    shim: { 
     jquery: { 
      exports: '$' 
     }, 
     underscore: { 
      exports: '_' 
     } 
    } 
}); 
+0

それは価値があるので、私はmain.js(またはそれに相当するもの)の中にすべてロードしています。それは一種の醜いですが、それは動作します。 –

+0

ケン - それは基本的に私がサードパーティ製のものをプリロードすることでやっていることです。私たちがJavaScriptでもっとうまくやっていることが分かったら、ちょっと汚いと感じます。 –

+0

合意。 TSのモジュールシステムはまだ少し残っているようです - 他の言語のように:-)。うまくいけば改善が来ているはずです。 –

答えて

4

もう一つの仕事は周りrequirejsのための型定義を使用し、むしろimport声明よりも、自分自身のrequire文を使用するだろう。

これは、タイプスクリプトimportは、コンパイラの変更だけでAMDまたはCommonJSと併用できるため、プログラム内でrequirejsをimport以上に結婚させることができるという欠点があります。

既存のdefinition for requirejs on Definitely Typedがあります。

+0

良い点。 TypeScriptチームが、サードパーティのライブラリを外部モジュールとして扱いやすくすることを本当に望んでいます。 –

+1

私は、この時点では「いいえの答え」以外の答えがあるとは思わない。だから私はあなたのものを最も近いものとしてマークします:) –

+0

@Steve:この問題を解決できるTypeScriptのアップデートはありますか? –

関連する問題