我已经使用C#多年了,我主要习惯于单文件的每种类型的做事方式.我也喜欢将文件放入子文件夹(对应于C#中的命名空间).
但现在我正在使用TypeScript构建一个移动Web应用程序,并发现自己以相同的方式构建我的代码.但是,这不能很好地工作:
第一点应该是通过编写一个小工具从捆绑输出中去掉不必要的模块包装器来解决的.而且我认为我需要避免使用子模块,只需将所有内容都粘贴到一个模块中,无论文件系统位置如何.
是否有更好的方法来构建TypeScript代码而不是我目前正在做的/计划或者像上面这样的推荐做法?对于喜欢单一责任原则的人来说,有哪些替代方案值得考虑?
PS:我希望这属于SO的指导方针,尽管可能有点主观和开放性.
Fen*_*ton 14
这是我的建议.
如果您在网站上使用TypeScript,请使用模块将完整且独立的功能块包含在一个文件中(除非它变得无法管理).保守"模块a"对"模块b"的内部位有多少访问权限.
将所有生成的JavaScript捆绑并缩小为单个文件.
用以下内容声明您的模块:
module MyModule {
// ...
}
Run Code Online (Sandbox Code Playgroud)
并使用引用将它们提供给其他代码文件:
///<reference path="MyModule.ts" />
Run Code Online (Sandbox Code Playgroud)
对于Web应用程序,您需要决定脚本繁重的内容.如果事情要轻量化,那就像对待网站一样.如果你要有很多脚本,那么AMD就是你的朋友.
使用AMD,您可以使用文件夹结构来组织代码.您的文件是您的模块,因此您不必使用module MyModule声明来命名文件MyModule.ts.然后,您可以使用文件夹和文件结构组织代码,并根据需要导入模块:
import myModule = module("./Messaging/Async/MyModule");
Run Code Online (Sandbox Code Playgroud)
因此,请将其import视为您的using陈述 - 除非您需要为其命名.
在运行时,您需要一些东西来处理为您加载模块.RequireJS是一个受欢迎的选择.
您只需在页面中添加一个脚本标记,它会加载RequiresJS并告诉它您的顶级模块的名称:
<script data-main="/Messaging/Async/MyModule" src="scripts/require.js"></script>
Run Code Online (Sandbox Code Playgroud)
对于服务器应用程序,您几乎肯定会想要使用CommonJS(例如,nodejs默认支持).
它主要像AMD(AMD实际上基于CommonJS),除了服务器将为您加载模块,因此您不需要包含模块加载脚本.
这都是真正的指导.如果您愿意,可以将网站样式捆绑用于非常大的程序 - 假设脚本将被下载一次并缓存,您可能会认为前期成本值得简单.
因此,在您认为它不适合您的特定程序并希望以不同方式执行操作之前,请使用该指南.该指南基于......的原则
| 归档时间: |
|
| 查看次数: |
3699 次 |
| 最近记录: |