使用TypeScript ES6模块和RequireJS注册Angular元素



我希望将一个现有的基于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。

最新更新