2

我目前正在尝试使用 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() {}
}
4

0 回答 0