我试图从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文件,而不是让每个文件定义它所需的文件。如何定义每个类/文件所需的文件?
答案 0 :(得分:2)
而不是让每个文件定义它所需的文件。
你仍然需要这样做。因为那将驱动订购。
但现在不使用module
(现在称为命名空间)而是使用import/export
格式来使用 true modules 。
https://basarat.gitbooks.io/typescript/content/docs/project/modules.html