0

Web Essentialsを使い始めましたが、「AMDモジュールを使用する」オプションがあることがわかりました。ASPMVC4アプリケーションにtypescriptを使用しています。誰かがAMDモジュールが何であるかを説明できますか?これは私が知っておくべきことですか?

4

1 に答える 1

1

AMDは、モジュラーJavaScriptをフォーマットしてロードする1つの方法です。ここを参照してください:http: //addyosmani.com/writing-modular-js/特にここを参照してください:http://requirejs.org/docs/whyamd.html

後者の情報源から引用するには:

AMD形式は、今日の「手動で注文する必要のある暗黙的な依存関係を持つ一連のスクリプトタグを作成する」よりも優れたモジュール形式と、ブラウザーで直接使用しやすいものが必要なことから生まれました。

基本的にAMDを使用すると、JavaScriptモジュールをオンデマンドでロードでき、グローバル名前空間が汚染されないようにコンテンツをカプセル化するためのフォーマットが提供されます。

TypeScriptでは、発見したAMDコンパイラスイッチを「オン」に設定して、次のようなモジュールをエクスポートします。

export module pe.components {
    export class Component {  // 'export' makes this visible outside the module

    }

    class FriendComponent { // no 'export' so this is only visible inside the module.

    }
}

そして、別のファイルで、このモジュールを次のようにインポートします。

import c = module('relative-path-to-file/pe.components');

そして、次のように使用します。

var component:Component = new c.pe.components.Component();//コンポーネントがエクスポートされるため、機能します

...しかしこれではありません:

var friend:FriendComponent = new c.pe.components.FriendComponent();// FriendComponentがエクスポートされないため、機能しない*。

(*エクスポートされていないインターフェイスが宣言モジュールの外部に表示されるバグがありました。これはTS 0.8.1で修正されたと思います)。

あなたの質問の2番目の部分に関して-これは本当に広すぎます。アーキテクチャで新しい機能(たとえば、シングルページアプリケーション内のプラグインやアプレット)をロードする必要がある場合は、そうです。AMDモジュールとRequireJSなどのロードフレームワークが最適な方法かもしれません。一方、ユーザーが必要とするすべての機能を事前に知っている場合は、スクリプトを完全に縮小して、単一のファイルとして事前にロードする方がよい場合があります。

ここでは、MVCを使用しているという事実は関係ないと思います。問題は、クライアント側のアーキテクチャが非同期のモジュラーアプローチを保証するかどうかです。

于 2012-11-22T15:23:03.670 に答える