Javascript 如何提高Angular2应用程序的加载性能?
Angular2应用程序加载缓慢,如何提高加载时的性能 我在html5中使用Angular2、typescript 目前,我的应用程序需要4秒钟才能加载。 我使用Firebase托管并使用cloudflare 我正在做的事情/信息:Javascript 如何提高Angular2应用程序的加载性能?,javascript,performance,angular,angular2-routing,systemjs,Javascript,Performance,Angular,Angular2 Routing,Systemjs,Angular2应用程序加载缓慢,如何提高加载时的性能 我在html5中使用Angular2、typescript 目前,我的应用程序需要4秒钟才能加载。 我使用Firebase托管并使用cloudflare 我正在做的事情/信息: 我压缩了图像 我缩小css 我缩小js 我在脚本上使用异步 我的脚本在我的文件夹中 脚本大约为700kb 我用谷歌速度测试得到65% 我使用了我使用的LIB的缩小版本,例如引导等 使用systemjs 这是种子应用程序im,使用: 流量: 当应用程序加载时,它会
- 我压缩了图像
- 我缩小css
- 我缩小js
- 我在脚本上使用异步
- 我的脚本在我的文件夹中
- 脚本大约为700kb
- 我用谷歌速度测试得到65%
- 我使用了我使用的LIB的缩小版本,例如引导等
- 使用systemjs
- 这是种子应用程序im,使用:
此外,请确保如果您的应用程序使用数据调用进行引导,您不会在等待这些调用返回时中断组件的呈现。承诺、异步等。如果不亲自操作整个代码库和后端,则很难诊断出您正面临的精确问题(正如其他人所说,这个问题可能根本不是角度问题) 话虽如此,我强烈建议您开始使用。它是由angular团队设计的,用于在易于使用的命令行界面中完成所有需要执行的操作。因此,我的答案取决于angular cli的使用 以下是优化ng2项目生产的一般方法: 1)提前(AoT)编译-捆绑/缩小/树抖动 听着,忘记配置一堆吞咽任务来完成所有这些任务的麻烦吧。angular cli只需一个简单的步骤即可处理捆绑/缩小/树抖动/AOT编译: ng build-prod-aot 这将在“dist”文件夹中生成以下js文件:
inline.d41d8cd98f00b204e980.bundle.js
vendor.d41d8cd98f00b204e980.bundle.js
main.d41d8cd98f00b204e980.bundle.js
styles.4CEC2BC5D44C666B4929AB2BB9C4D8EFA.bundle.css
一个单页应用程序在加载时通常需要花费更多的时间,因为它一次加载所有必需的内容
我也遇到了同样的问题,我的团队使用以下方法优化了我们的项目,从8秒加载到2秒
import { Injectable } from '@angular/core';
declare var document: any;
@Injectable()
export class Script {
loadScript(path: string) {
//load script
return new Promise((resolve, reject) => {
let script = document.createElement('script');
script.type = 'text/javascript';
script.src = path;
if (script.readyState) { //IE
script.onreadystatechange = () => {
if (script.readyState === "loaded" || script.readyState === "complete") {
script.onreadystatechange = null;
resolve({ loaded: true, status: 'Loaded' });
}
};
} else { //Others
script.onload = () => {
resolve({ loaded: true, status: 'Loaded' });
};
};
script.onerror = (error: any) => resolve({ loaded: false, status: 'Loaded' });
document.getElementsByTagName('head')[0].appendChild(script);
});
}
}
这只是一个动态加载脚本的示例代码,您可以根据需要自定义和优化它。
对于样式表,您应该使用样式URL将其加载到组件中
逐步延迟加载模块
import { NgModule } from '@angular/core';
import { UserModule } from './user/user.module';
import { AdminModule } from './admin/admin.module';
import { AppComponent } from './app.component';
import { LoginComponent } from './login.component';
@NgModule({
imports: [UserModule, AdminModule],
declarations: [AppComponent, LoginComponent],
bootstrap: [AppComponent]
})
export class AppModule { }
import { ModuleWithProviders } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { LoginComponent } from './login.component';
const routes: Routes = [
{ path: 'login', component: 'LoginComponent' }, //eager loaded
{ path: 'admin', loadChildren: './admin/admin.module#AdminModule' }, // Lazy loaded module
{ path: 'user', loadChildren: './user/user.module#UserModule' } //lazy loaded module
];
ng build --prod --aot --optimization --build-optimizer --vendor-chunk --common-chunk --extract-licenses --extract-css --source-map=false