6

TypeScript で複雑なモジュールを作成しています (Mono.Cecil と同様に PE ファイル構造を解析しますが、TS/JS では洗練されていません)。

問題は、その機能をファイル/フォルダー/モジュールの次元にどのように配置するのが最善かということです。

C# に似た構造から始めました。各クラスは独自のファイルにあり、名前空間 (モジュール) は多かれ少なかれ独立した機能の大規模なセットに対応し、サブフォルダーに存在します。

現在、TypeScript にはいくつかの問題があります。それとも、私が愚かであることに問題があるのでしょうか?

  1. 個別のファイル内のすべてのクラスは開発には適していますが、コンパイルされた出力には意味がありません。1 つではなく 24 個のファイルを持ち歩きたいと思う人はいません。
  2. すべてを 1 つのファイル (tsc -out) にコンパイルすると、すべてが同じモジュールに属している場合でも、個別のファイルの内容はほぼ個別に出力されます。TypeScript は、ファンキーでハッキーに見える構文を使用してそのモジュールを構築します。これは、私が手で書くようなものではありません (1 つのモジュール定義のすぐに呼び出される関数にすべてを貼り付けます)。
  3. 自分のものが Node.js とブラウザーで動作するようにしたい。ノードの場合は「エクスポート モジュール」ですべてを処理する必要がありますが、ブラウザの場合は、whatever.js を生成してページに含めることが一般的です。つまり、「エクスポート モジュール」を削除する必要があります。

それに対処する最善の方法は何ですか?

4

3 に答える 3

3

現在、require.js および amd モジュールを使用してコードを構造化しています。各クラスは 1 つのファイルにあり、必要なのは require.js ブートストラップだけです。私はノードを扱っていないので、ここでコメントすることはできませんが、一見の価値があるかもしれません. http://blorkfish.wordpress.com/2012/10/23/typescript-organizing-your-code-with-amd-modules-and-require-js/

于 2012-11-17T18:35:19.957 に答える
0

これに対するTypescript 1.0+の答えは、CommonJs構文を使用してモジュールを使用することです

tsc旗を渡す

--module commonjs

CommonJS スタイル モジュールを生成し、Typescript ファイルで、require 構文を使用してリソースをインポートします。

import A = require('./A')  //no .ts in the name

ブラウザーで使用するには、browserifyを使用します。ほとんどの場合、 grunt-browserifyに関連付けられています。

于 2014-06-12T09:34:46.613 に答える