如何使用 Requirejs 在 Typescript 中使用 Modules/Classes
How to use Modules/Classes in Typescript with Requirejs
我正在尝试从 MS CRM 中开始使用 RequireJs,但我对如何将 RequireJS 与我当前的 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
}
}
每个文件可能包含对一个或多个常见 files/classes:
的依赖
// 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 函数调用中读取需要的配置, 然后在表单脚本上调用适当的 onLoad 方法。这一切都是为了加载主窗体 JS,并调用 onLoad 函数。我的问题是我必须在 CRM OnLoad 事件中定义所需的 JS 文件,而不是让每个文件都定义它需要哪些文件。如何定义每个 class/file 需要哪些文件?
rather than having each file define what files are required by it.
你还需要这样做。因为这将推动 排序 。
但现在不再使用 module
(现在称为命名空间),而是使用 import/export
格式来使用 真正的模块.
更多
https://basarat.gitbooks.io/typescript/content/docs/project/modules.html
我正在尝试从 MS CRM 中开始使用 RequireJs,但我对如何将 RequireJS 与我当前的 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
}
}
每个文件可能包含对一个或多个常见 files/classes:
的依赖// 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 函数调用中读取需要的配置, 然后在表单脚本上调用适当的 onLoad 方法。这一切都是为了加载主窗体 JS,并调用 onLoad 函数。我的问题是我必须在 CRM OnLoad 事件中定义所需的 JS 文件,而不是让每个文件都定义它需要哪些文件。如何定义每个 class/file 需要哪些文件?
rather than having each file define what files are required by it.
你还需要这样做。因为这将推动 排序 。
但现在不再使用 module
(现在称为命名空间),而是使用 import/export
格式来使用 真正的模块.
更多
https://basarat.gitbooks.io/typescript/content/docs/project/modules.html