使用ES5进行AOT(Ahead-Of-Time)编译

Mat*_*sey 10 javascript ecmascript-5 webpack babeljs angular

是否可以仅使用ES5在Angular中进行AOT编译?

更重要的是,我可以在ES5中使用NGTools Webpack插件吗?

我知道TypeScript是Angular的首选语言,但是我的工作场所并未批准使用TypeScript作为Angular项目.我的手有点束缚,因此我不希望客户端的性能受到影响.

我项目的一些相关信息:

  • Webpack 2用于构建/打包
  • 写在ES2015中使用Babel编译成ES5

我已经全神贯注,无法找到明确的答案,我真的很感激任何人都可以提供的信息.

提前致谢!

Pra*_*ddy 5

在tsconfig.json文件中,将目标设置为es5.

    "target": "es5",
Run Code Online (Sandbox Code Playgroud)


Rea*_*lar 3

Angular应该完全兼容 ES5。

AOT 编译过程使用附加到组件的元数据。这就是它查找需要编译的模板和样式的方式。

TypeScript 是编写组件的首选方法。因为它允许您使用@Component注释功能来附加元数据。

ES6 是次要方法,Angular 支持 ES6 装饰器将元数据附加到组件。

ES5 更基础。没有任何自动方法来附加元数据,但 AOT 编译器将查找annotations附加到对象原型的数组。

这就是使用 ES5 的方式

HeroComponent.annotations = [
     new ng.core.Component({
        selector: 'hero-view',
        template: '<h1>{{title}}: {{getName()}}</h1>'
     })
];
Run Code Online (Sandbox Code Playgroud)

所以来回答你的问题。是的,您仍然可以在 ES5 中使用 AOT。