mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
This change moves information from instructions to declarative position: - `ɵɵallocHostVars(vars)` => `DirectiveDef.hostVars` - `ɵɵelementHostAttrs(attrs)` => `DirectiveDef.hostAttrs` When merging directives it is necessary to know about `hostVars` and `hostAttrs`. Before this change the information was stored in the `hostBindings` function. This was problematic, because in order to get to the information the `hostBindings` would have to be executed. In order for `hostBindings` to be executed the directives would have to be instantiated. This means that the directive instantiation would happen before we had knowledge about the `hostAttrs` and as a result the directive could observe in the constructor that not all of the `hostAttrs` have been applied. This further complicates the runtime as we have to apply `hostAttrs` in parts over many invocations. `ɵɵallocHostVars` was unnecessarily complicated because it would have to update the `LView` (and Blueprint) while existing directives are already executing. By moving it out of `hostBindings` function we can access it statically and we can create correct `LView` (and Blueprint) in a single pass. This change only changes how the instructions are generated, but does not change the runtime much. (We cheat by emulating the old behavior by calling `ɵɵallocHostVars` and `ɵɵelementHostAttrs`) Subsequent change will refactor the runtime to take advantage of the static information. PR Close #34683
67 lines
1.6 KiB
JSON
67 lines
1.6 KiB
JSON
{
|
|
"cli-hello-world": {
|
|
"master": {
|
|
"uncompressed": {
|
|
"runtime-es2015": 1485,
|
|
"main-es2015": 141985,
|
|
"polyfills-es2015": 36808
|
|
}
|
|
}
|
|
},
|
|
"cli-hello-world-ivy-minimal": {
|
|
"master": {
|
|
"uncompressed": {
|
|
"runtime-es2015": 1485,
|
|
"main-es2015": 18496,
|
|
"polyfills-es2015": 36808
|
|
}
|
|
}
|
|
},
|
|
"cli-hello-world-ivy-compat": {
|
|
"master": {
|
|
"uncompressed": {
|
|
"runtime-es2015": 1485,
|
|
"main-es2015": 148115,
|
|
"polyfills-es2015": 36808
|
|
}
|
|
}
|
|
},
|
|
"cli-hello-world-ivy-i18n": {
|
|
"master": {
|
|
"uncompressed": {
|
|
"runtime-es2015": 1485,
|
|
"main-es2015": 137141,
|
|
"polyfills-es2015": 37494
|
|
}
|
|
}
|
|
},
|
|
"cli-hello-world-lazy": {
|
|
"master": {
|
|
"uncompressed": {
|
|
"runtime-es2015": 2289,
|
|
"main-es2015": 267182,
|
|
"polyfills-es2015": 36808,
|
|
"5-es2015": 751
|
|
}
|
|
}
|
|
},
|
|
"cli-hello-world-lazy-rollup": {
|
|
"master": {
|
|
"uncompressed": {
|
|
"runtime-es2015": 2289,
|
|
"main-es2015": 226288,
|
|
"polyfills-es2015": 36808,
|
|
"5-es2015": 779
|
|
}
|
|
}
|
|
},
|
|
"hello_world__closure": {
|
|
"master": {
|
|
"uncompressed": {
|
|
"bundle": "TODO(i): temporarily increase the payload size limit from 105779 - this is due to a closure issue related to ESM reexports that still needs to be investigated",
|
|
"bundle": "TODO(i): we should define ngDevMode to false in Closure, but --define only works in the global scope.",
|
|
"bundle": 176433
|
|
}
|
|
}
|
|
}
|
|
}
|