如何在Typescript中使用Requirejs中的模块/类

时间:2016-07-08 04:37:58

标签: typescript requirejs dynamics-crm

我试图从MS CRM中开始使用RequireJs,但我对如何将Require JS与我当前的TypeScript文件一起使用感到困惑。

目前,CRM中的每个表单都有自己的Typescript文件,如下所示:

// 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
    }
}

每个文件可能包含一个或多个公共文件/类的依赖项:

// 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 {
        ... 
    }
}

这些文件目前都存在于VS网站项目中。每当我保存ts文件时,它就会生成JS并将这些文件部署到CRM。

现在,输入RequireJS。由于CRM中用于JS文件执行的唯一受支持的钩子是" OnLoad"和" onSave"事件,我创建了一个Contoso.Require文件,它将从CRM OnLoad函数调用中读取require配置,然后在窗体脚本上调用相应的onLoad方法。这一切都是为了加载主窗体JS,并调用onLoad函数。我的问题是我必须在CRM OnLoad事件中定义所需的JS文件,而不是让每个文件定义它所需的文件。如何定义每个类/文件所需的文件?

1 个答案:

答案 0 :(得分:2)

  

而不是让每个文件定义它所需的文件。

你仍然需要这样做。因为那将驱动订购

但现在不使用module(现在称为命名空间)而是使用import/export格式来使用 true modules

更多

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