Javascript 跨多个文件的Typescript内部模块与js缩小
我在做一个大型的打字项目。我更喜欢创建许多小型类,并将每个类放在单独的文件中,并使用深度嵌套的名称空间(“typescript中的内部模块”)。我认为这是一个很好的实践,因为它鼓励封装、可测试性、可重用性等。我有超过一百个具有深度命名空间的小类型的Script文件。p> 每个typescript文件的编译.js输出包含每个文件的3行自动生成的“样板文件”,用于每个命名空间级别(顶部2行,底部1行)。例如,下面是一个typescript文件,其中包含一个空类,位于名称空间的4个级别内:Javascript 跨多个文件的Typescript内部模块与js缩小,javascript,namespaces,typescript,minify,Javascript,Namespaces,Typescript,Minify,我在做一个大型的打字项目。我更喜欢创建许多小型类,并将每个类放在单独的文件中,并使用深度嵌套的名称空间(“typescript中的内部模块”)。我认为这是一个很好的实践,因为它鼓励封装、可测试性、可重用性等。我有超过一百个具有深度命名空间的小类型的Script文件。p> 每个typescript文件的编译.js输出包含每个文件的3行自动生成的“样板文件”,用于每个命名空间级别(顶部2行,底部1行)。例如,下面是一个typescript文件,其中包含一个空类,位于名称空间的4个级别内: modul
module a.b.c.d {
export class MyClass {
constructor() {
}
}
}
这将编译成以下.js:
var a;
(function (a) {
var b;
(function (b) {
var c;
(function (c) {
var d;
(function (d) {
var MyClass = (function () {
function MyClass() {
}
return MyClass;
})();
d.MyClass = MyClass;
})(d = c.d || (c.d = {}));
})(c = b.c || (b.c = {}));
})(b = a.b || (a.b = {}));
})(a || (a = {}));
为了提高性能,我想将我的.js文件合并/缩小为一个用于生产的文件。如果我只是按照正确的顺序附加文件,那么进出名称空间的样板文件将对每个文件重复。对于小的.ts文件,这将包含大量开销
我的问题是:如果连续的.js文件共享相同的名称空间,是否有某种方法可以合并/缩小我的.js文件,从而去掉这些深层名称空间的样板文件 我知道从内部模块迁移到外部模块可能需要很多工作,但这是您未来的最佳选择 创建外部模块后,可以使用
--module
标志将TypeScript代码编译成CommonJS或AMDmodules:
tsc myfile.ts --module "amd"
tsc myfile.ts --module "commonjs"
然后,您可以使用将应用程序中的所有AMD模块捆绑到一个优化文件中
如果您使用commonJS,您可以使用它将所有外部模块捆绑到一个优化文件中。希望能有帮助
我创建了一个Github项目,展示了如何自动化此过程针对此问题进行优化的最简单方法是使用压缩(例如gzip)-这种重复处理得非常好。您使用任何类型的构建过程吗?您是否尝试过在单个文件中编译?我这样做了,但实际上从来没有检查过这种开销代码的冗余。开销不应该是一个很大的问题,因为创建名称空间只运行一次,而所有东西都只设置了一次?如果您所指的是文件大小开销,那么这可能是一个问题,当然,我不确定是否有一个简单的解决方法。