Angular 2 and AOT (ahead of time) compilation
Today I managed to run AOT compilation in existing Angular 2 application.
This is a note to remember what I had to do to make it work:
- Follow this example: https://medium.com/@laco0416/aot-compilation-with-webpack-359ac9f4916f#.a1v35vlyl
- Downgrade Typescript to 2.0.10.
- Downgrade Webpack to 2.1.0-beta.28.
- Change all "template: require(path)" to "templateUrl: path". Require function is not available in AOT compilation process.
- Had to add angular2-typescript-loader to handle ts files in webpack (loaders: isProd ? '@ngtools/webpack' : ["awesome-typescript-loader", 'angular2-template-loader']). It handles templateUrl in components.
Newest versions of libraries (ts 2.2 and webpack 2.2.0-rc.3) had documented issues with whole mechanism, so I had some fun searching for solutions.
Performance before enabling AOT compilation:
Scripting took 3 seconds less and it is more than visible. Difference is huge. Scripts are now 600KB bigger, but they load once, so it is not a huge problem. AOT compilation is nice feature of Angular 2.