使用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编译的工厂文件。这些实际上是在内存中,还是编译器生成临时文件,或者是什么?
答案 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 强>