服务器端渲染
服务器端渲染 (SSR) 在服务器上生成静态页面来减少应用程序的加载时间。
SSR 仅用于 Angular Universal 应用程序,但对于 DevExtreme 组件,Angular Universal 和普通 Angular 应用程序没有区别。
您可以通过两种方式获得 Angular Universal 应用程序:
- 运行以下命令将 Universal 模块添加到普通的 Angular 应用程序中:
ng generate universal my-app
- 从头开始启动一个通用应用程序并向其添加DevExtreme组件。
注意:DevExtreme Angular组件在SSR模式下不支持在运行时切换主题,您只能使用一个主题。
服务器上的缓存请求
当服务器缓存请求时,DevExtreme组件将使用第一次加载页面时应用的数据呈现,这减少了对服务器的请求数。
要启用此功能:
1. 在 app.module.ts 文件中导入 DxServerTransferStateModule:
app.module.ts
import { DxServerTransferStateModule } from 'devextreme-angular'; @NgModule({ // ... imports: [ // ... DxServerTransferStateModule ] }) export class AppModule { }
2. 在 app.server.module.ts 文件中导入 ServerTransferStateModule:
app.server.module.ts
import { ServerModule, ServerTransferStateModule } from '@angular/platform-server'; // ... @NgModule({ imports: [ AppModule, ServerModule, ServerTransferStateModule, ModuleMapLoaderModule ], bootstrap: [AppComponent], })
3. 检查 main.ts 文件是否包含以下代码,以确保 AppModule 在服务器端呈现的页面加载后被引导:
main.ts
document.addEventListener('DOMContentLoaded', () => { platformBrowserDynamic().bootstrapModule(AppModule) .catch(err => console.log(err)); });
Tree Shaking
Tree shaking移除源代码和库代码的未使用部分,以减少应用程序的下载大小。
如果您仅导入在应用程序中使用的模块,则Tree shaking已经有效。例如,以下导入仅从 devextreme-angular 模块中获取 DxButtonModule:
TypeScript
import { DxButtonModule } from 'devextreme-angular';
如果在您的应用程序中未配置tree shaking,请从特定模块而不是主 devextreme-angular 模块导入导出以减少包大小:
TypeScript
import { DxButtonModule } from 'devextreme-angular/ui/button';
DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac,到ASP.NET Core或Vue,DevExtreme包含全面的高性能和响应式UI小部件集合,可在传统Web和下一代移动应用程序中使用。 该套件附带功能齐全的数据网格、交互式图表小部件、数据编辑器等。
DevExpress技术交流群4:715863792 欢迎一起进群讨论
更多DevExpress线上公开课、中文教程资讯请上中文网获取