这是我的建议。
网站
如果您在网站上使用 TypeScript,请使用模块来封装完整且独立的功能块并将其保存在一个文件中(除非它变得无法管理)。对于“模块 a”对“模块 b”内部位的访问量要保守。
将所有生成的 JavaScript 捆绑并压缩到一个文件中。
声明你的模块:
module MyModule {
// ...
}
并使用参考使它们可用于其他代码文件:
///<reference path="MyModule.ts" />
网络应用
对于 Web 应用程序,您需要决定脚本繁重的内容将是多少。如果事情要轻量级,请将其视为网站。如果您将有很多脚本,那么 AMD 是您的朋友。
使用 AMD,您可以使用文件夹结构来组织您的代码。您的文件是您的模块,因此您无需使用module MyModule
声明,而是将文件命名为MyModule.ts
. 然后,您可以使用文件夹和文件结构组织代码并根据需要导入模块:
import myModule = module("./Messaging/Async/MyModule");
所以把 theimport
当作你的using
陈述——除非你需要给它一个名字。
在运行时,您需要一些东西来为您加载模块。RequireJS是一个流行的选择。
您只需在页面中添加一个脚本标签,它会加载 RequiresJS 并告诉它您的顶级模块的名称:
<script data-main="/Messaging/Async/MyModule" src="scripts/require.js"></script>
服务器应用
对于服务器应用程序,您几乎肯定会想要使用 CommonJS(例如,默认情况下由 nodejs 支持)。
它的工作原理与 AMD(AMD 实际上基于 CommonJS)非常相似,只是服务器会为您加载模块,因此您不需要包含模块加载脚本。
金子弹
这真的是所有的指导。如果您愿意,您可以对非常大的程序使用网站样式捆绑 - 鉴于脚本将被下载一次并被缓存,您可能会认为前期成本值得简单。
因此,请使用该指南,直到您认为它不适合您的特定程序并且想要以不同的方式做事。指导原则是...
- 减少对网站的 http 请求数
- 增加 Web 应用程序/服务器应用程序的可读性和可维护性
- 仅加载 Web 应用程序/服务器应用程序所需的内容