Angular JIT&内存工厂类中的AOT - 它们实际上是生成还是仅仅在内存中?

时间:2017-03-18 16:29:24

标签: angular angular-cli

使用Angular CLI和默认的ng new应用,我创建了一个 JIT 和一个 AOT 项目来比较文件大小,捆绑,检查Chrome DevTools等。

然后我提供了这两个,并检查了Chrome DevTools中的文件   - JIT:ng服务   - AOT:ng服务 - 很多

对于JIT版本,ngFactory文件都由JIT编译器编译(对于AOT,这些确切的函数在预编译的主包中)。

在应用的JIT版本中创建ng类工厂的<{3}}

  

JIT编译在内存中生成这些相同的NgFactories   在很大程度上是看不见的。

当我在DevTools中查看JIT应用程序时,(见截图)我可以在无域下看到JIT编译的工厂文件。这些实际上是在内存中,还是编译器生成临时文件,或者是什么?

documentation says

1 个答案:

答案 0 :(得分:3)

当您运行JIT编译时,它们位于浏览器内存中。

Angular通过new Function()

生成它们

例如:

var expression = `
    function Yurzui() {
      this.param1 = name;
    }
    Yurzui.prototype.hello = function() {
      return 'Hello ' + this.param1;
    }
    return Yurzui;
    //# sourceURL=/yurzui/say-hello/my.factory.js
`;

var func = new Function('name', expression);

var clazz = func('Some name');
alert((new clazz()).hello());

<强> Plunker Example

enter image description here