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

Posted

技术标签:

【中文标题】使用 TypeScript ES6 模块和 RequireJS 注册 Angular 元素【英文标题】:Registering Angular elements using TypeScript ES6 modules and RequireJS 【发布时间】:2015-11-18 23:16:45 【问题描述】:

我希望将现有的基于 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 Bundling & Minification (System.Web.Optimization) 并将包直接输出为 <script> 标记。但是,当尝试包含使用 define() 方法声明的 AMD 模块时,我们会遇到常见的 MISMATCHED ANONYMOUS DEFINE() error。

这些建议似乎都不理想或不适合我们,那么鉴于 TypeScript 将模块编译成匿名的 define() 调用,应该如何正确地做到这一点?

【问题讨论】:

【参考方案1】:

我使用 NPM TsProject gulp 适配器捆绑 Typescript ES6 模块。查看TsProjectTodoMVC 应用程序,该应用程序展示了如何使用 Typescript ES6 模块包、Angular 1.4.7 和 AMD/Require 获取单个 js。

【讨论】:

以上是关于使用 TypeScript ES6 模块和 RequireJS 注册 Angular 元素的主要内容,如果未能解决你的问题,请参考以下文章

es6模块 nodejs模块和 typescript模块

jest + typescript + es6 模块(又一次,2019 年)- SyntaxError: Unexpected token export

Typescript es6导入模块“文件不是模块错误”

在 Typescript 编译期间在相对导入语句上附加 .js 扩展名(ES6 模块)

在 ES6 模块中使用 typescript 支持扩展全局对象,如 Autodesk.Viewing.Extension

Typescript中的模块和继承