1

我正在开发中的Visual Studio 2015年一个Web应用程序与Angular2打字稿。我正在使用Gulp来生成分布式缩小js文件。随着Angular2我明白了,没有必要transpile 打字稿没有导入模块时的Visual Studio,也不符合咕嘟咕嘟SystemJs做的。Angular2打字稿transpiler与缩小/丑化

现在是这样一个问题:

如何SystemJs与缩小,丑化等工作?

System.import('app/main').then(null, console.error.bind(console)); 

如何缩小或丑化这个?

+0

分析多一点,我看到'System.config'有一个名为包属性,在那里我可以捆绑我的多个模块。我没有发现任何关于uglifying的事情。 – DAG

+0

该选项属于[SystemJS Builder](https://github.com/systemjs/builder#minfication--source-maps)。 Angular2教程不使用SystemJS Builder –

回答

6

SystemJS是

通用动态模块加载 - 加载ES6模块,AMD,CommonJS的并在浏览器和全球的NodeJS脚本。适用于Traceur和Babel。

事实上,有两种方法可以使用SystemJS:

  • Transpile您的打字稿文件浏览器内。这意味着SystemJS会加载你的模块,它会加载相应的TypeScript文件并在运行中对它们进行转储。下面的配置可以在这种情况下使用:

    <script> 
        System.config({ 
        transpiler: 'typescript', 
        typescriptOptions: { 
         emitDecoratorMetadata: true 
        }, 
        packages: { 
         'app': { 
         defaultExtension: 'ts' 
         } 
        } 
        }); 
        System.import('app/main') 
        .then(null, console.error.bind(console)); 
    </script> 
    
  • 使用以前transpiled文件。在这种情况下,您需要使用TypeScript编译器从TypeScript生成JS文件。这些JS文件直接依赖于SystemJS API来注册和导入模块。

    <script> 
        System.config({ 
        packages: { 
         'app': { 
         defaultExtension: 'js' 
         } 
        } 
        }); 
        System.import('app/main') 
        .then(null, console.error.bind(console)); 
    </script> 
    

这个问题也可以帮助你:

这就是上下文。关于你的问题,你似乎使用第一个选项。要回答你的问题,缩小事情只适用于第二种选择。事实上,这对应于优化为您的应用程序加载的元素(网络调用数量,文件大小)。既然你使用了这个选项的编译JS文件,你可以缩小/丑化它们。如果你只想创建一个JS文件,你可以考虑TypeScript编译器的outFile属性。

详情请参阅此问题:

+0

这真是太棒了。非常感谢你。正如我在上述文章中看到的,即使是System.config也不再需要。你知道为什么? – DAG

+0

不客气!在你不需要System.config的情况下,由于outFile模块在输出文件中用'System.register'显式注册。你不需要使配置成为模块和文件名之间的对应关系(没有选项就需要)...... –