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