Service Worker 是一种在浏览器中运行的 JavaScript 脚本,它允许你在客户端进行缓存、后台同步、推送通知等操作。它可以提高 web 应用的性能,特别是在离线或低连接网络环境下,它能让应用继续运行并提供基本功能。
如何工作:
- 注册: 在浏览器中注册 Service Worker。
- 安装: 当 Service Worker 安装时,它可以缓存静态资源,使得离线访问成为可能。
- 激活: 安装完成后,Service Worker 被激活,可以接管页面的请求并处理缓存。
- 拦截网络请求: Service Worker 能够拦截所有网络请求,可以选择返回缓存的资源,或者请求网络数据并缓存它。
Angular 使用例子
-
安装依赖: 在 Angular 项目中使用 Service Worker,首先需要安装 Angular 的 PWA 支持:
ng add @angular/pwa -
配置
angular.json: Angular 会自动为你更新angular.json文件,加入必要的配置。 -
修改 AppModule: 在你的
app.module.ts文件中,导入ServiceWorkerModule并启用它:import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { AppComponent } from './app.component'; import { ServiceWorkerModule } from '@angular/service-worker'; import { environment } from '../environments/environment'; @NgModule({ declarations: [AppComponent], imports: [ BrowserModule, ServiceWorkerModule.register('ngsw-worker.js', { enabled: environment.production, }), ], providers: [], bootstrap: [AppComponent], }) export class AppModule {} -
创建 Service Worker 脚本: 如果你需要更细致的控制,可以自定义
ngsw-worker.js脚本或修改ngsw-config.json来定义缓存策略。 -
构建并启动应用: 使用以下命令进行构建,并确保 PWA 功能正常工作:
ng build --prod然后你可以启动一个静态文件服务器来测试:
npx http-server -p 8080 -c-1 dist/
示例效果:
- 离线支持: 用户可以在离线情况下访问缓存的资源。
- 快速加载: 服务工作者可以通过缓存的资源,减少页面加载时间。
这样,Angular 服务工作者帮助你为 Web 应用添加离线功能和提升性能。