我目前正在尝试使用 UpgradeModule 将大型 Angular 1.6.1 应用程序引导到 Angular 4.0.1。我已经成功地让应用程序运行,但我注意到渲染时间显着放缓 - 太糟糕了,它在触发一些事件后完全冻结。
我怀疑这是摘要循环的问题,运行分析器我可以看到 zonejs 函数调用需要很长时间才能处理。
还不清楚在运行混合应用程序时是否应该预期渲染时间会明显变慢?
我还注意到一些可能与同一问题有关的奇怪行为。这些承诺似乎并不一致。似乎服务器响应已成功返回,但角度承诺并未检测到它已返回 - 导致无限加载图标(我有一个加载器组件,它显示加载图标,直到所有承诺都返回)。
有什么特别的东西我可以检查,这可能会导致渲染缓慢?
这是我的设置。
app.ts
- 主入口文件
import 'zone.js';
import 'reflect-metadata';
import { NgModule } from '@angular/core';
import { UpgradeModule } from '@angular/upgrade/static';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './main.module';
platformBrowserDynamic().bootstrapModule(AppModule).then(platformRef => {
const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule;
upgrade.bootstrap(document.body, ['main']);
});
main.module.ajs.ts
- 我的 AngularJS 模块(为了便于阅读,我删除了所有依赖项)
// AngularJS entry
import './exampleDep/exampleDep.module';
import { CONFIGURATION } from '../config';
angular
.module('main', [
'ngRoute',
'exampleDep'
])
.config(applicationRouting)
.run(applicationInit)
.constant('CONFIGURATION', CONFIGURATION);
function applicationInit($rootScope, CONFIGURATION) {
$rootScope.CONFIGURATION = CONFIGURATION;
}
function applicationRouting($routeProvider, $analyticsProvider) {
$analyticsProvider.firstPageview(false);
$analyticsProvider.virtualPageviews(false);
$routeProvider
.when('/?', {
reloadOnSearch: false
})
.otherwise({
redirectTo: '/'
});
}
main.module.ts
- 我的角模块
// Angular entry
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { UpgradeModule } from '@angular/upgrade/static';
@NgModule({
imports: [
BrowserModule,
UpgradeModule
],
bootstrap: []
})
export class AppModule {
ngDoBootstrap() {}
}