2016-07-08 16 views
2

私はMS CRM内からRequireJsを使用して起動しようとしてると活字体でモジュール/クラスを使用しますが、私は私の現在の活字体ファイルとJSを必要とする使い方に混​​乱しているようにする方法。Requirejs

// File Path .\_Abc\scripts\CommonLib.ts 
module ABC_Corp { 
    export class CommonLib { 
     ... 
    } 
} 

// File Path .\_Abc\scripts\RestLib.ts 
module ABC_Corp { 
    export class RestLib { 
     ... 
    } 
} 


// File Path .\_Abc\scripts\RoleLib.ts 
module ABC_Corp { 
    export class RoleLib { 
     ... 
    } 
} 

// File Path .\_Contoso\scripts\Contact.ts 
module Contoso { 
    export class Contact { 

     private static instance = new Contact(); 

     //#region Form Properties 

     static fields = { } 

     //#endregion Form Properties 

     //#region onLoad/onSave 

     static onLoad(): void { 
      Contact.instance.onLoad(); 
     } 

     private onLoad =(): void => { ...} 

     static onSave(): void { Contact.instance.onSave(); } 

     private onSave =(): void => { ... } 

     //#endregion onLoad/onSave 
    } 
} 

各ファイルに1つ以上の共通のファイル/クラスの依存関係が含まれる場合があります。

は現在、CRM内の各フォームには、それは次のようになります自分の活字体ファイルは、だましたこれらのファイルは、現在すべてVS Webサイトプロジェクトに存在します。 tsファイルを保存するたびにJSを生成し、それらのファイルをCRMにデプロイします。

ここで、RequireJSと入力します。 CRMファイルの実行に必要なサポートされている唯一のフックは、OnLoadとonSaveイベントであるため、CRM OnLoad関数呼び出しから必要な設定を読み込むContoso.Requireファイルを作成してから、適切な関数フォームスクリプトのonLoadメソッド。これは、メインフォームJSをロードしてonLoad関数を呼び出すためにすべて動作しています。私の問題は、各ファイルに必要なファイルを定義するのではなく、CRM OnLoadイベントで必要なJSファイルを定義する必要があることです。どのように各クラス/ファイルに必要なファイルを定義するのですか?

+0

私は質問の本当にわからないんだけどうまくいけば、それはいくつかの前後で明らかになりました。 require.jsを使用する予定のどこにいても、明示的にrequire.jsを含める必要があります。したがって、CRMフォームの場合は、require.jsおよびcontact.jsへの参照を追加する必要があります。 contact.jsのコーディングでは '/// <参照パス=" require.d.ts "/>'を(正確なパスで)追加してから、OnLoad関数で 'import somemodule = require( './ somemodule私はあなたの質問から何かが欠けていると思っていますが、うまくいけば、前後にいくらか明確になります。 – Nicknow

答えて

2

ではなく、各ファイルを持つファイルは、それが必要とするものを定義します。

あなたはまだそれを行う必要があります。それがの注文をにすることになるからです。

しかし、今の代わりに(今の名前空間と呼ばれている)module真モジュールを使用するようにimport/export形式を使用するを使用します。

もっと

https://basarat.gitbooks.io/typescript/content/docs/project/modules.html

+0

私はAMD Typescript Compilationに切り替える必要があります。その後、モジュールをエクスポートしてファイルごとにインポートする必要がありますか?私はすでにjavascriptコメントを持っているので、おそらく実行して検索して置き換えることができます。ちょうど私が正しい木を鳴らしていることを確認したい... – Daryl