我希望将一个现有的基于AMD的Angular应用程序转换为使用新的TypeScript 1.5 ES6模块语法。目前我们所有的模块都在单独的文件中,主"app"模块定义为…
define('app', ['angular'], (angular) => {
return angular.module('app', []);
});
…以及所有使用require()
方法注册的Angular元素,例如
require(['app'], (app: ng.IModule) => {
app.config(config);
function config() {
// Some config
}
});
然而,使用TypeScript ES6模块语法,AMD模块是用define()
方法生成的,例如
define(["require", "exports"], function (require, exports) {
...
});
我们以前一直在使用ASP。NET捆绑;Minification (System.Web.Optimization),并将bundle直接作为<script>
标签输出。然而,当试图包含用define()
方法声明的AMD模块时,我们会遇到常见的MISMATCHED ANONYMOUS DEFINE()错误。
这些建议似乎都不理想,也不适合我们,那么在TypeScript将模块编译成匿名define()
调用的情况下,应该如何正确地做到这一点呢?
我使用NPM TsProject的gulp适配器来捆绑Typescript ES6模块。查看TsProjectTodoMVC应用,它展示了如何使用Typescript ES6模块包、Angular 1.4.7和AMD/Require获得一个js。