Ste*_*rov 10 angular angular-router
我们正在使用Lazy Loading for Router Modules.
{
path: 'users',
loadChildren: 'app/users/users.module#UsersModule',
},
Run Code Online (Sandbox Code Playgroud)
但是当我们更新我们的应用程序版本(将新捆绑包上传到服务器)时,它总是被破坏:旧应用程序(用户已经下载)尝试获取不再在服务器上的旧块文件.
实例:https://alexshakura.github.io/chunk-error/ (我只是重命名块以突出显示错误)
处理此错误的正确方法是什么?
我来介绍一下这些步骤:
您可以尝试使用ng服务工作人员为您执行此操作.
服务工作者将拥有自己的清单,使工作人员能够跟踪应用程序版本和缓存资产.每次用户重新加载页面时,都会提供应用程序的缓存版本.然后,在后台,服务工作者将获取当前清单,解析它,如果有版本更改,它将在后台缓存新的应用程序版本.下一个用户的重新加载将显示该应用程序的新版本.
您可以通过"serviceWorker": true添加.angular-cli.json到应用程序部分来启用服务工作者功能.
然后ngsw-config.json在你的src目录中创建一个文件.默认值应如下所示:
{
"index": "/index.html",
"assetGroups": [{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html"
],
"versionedFiles": [
"/*.bundle.css",
"/*.bundle.js",
"/*.chunk.js"
]
}
}, {
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
]
}
}]
}
Run Code Online (Sandbox Code Playgroud)
最后,将NGSW模块初始化放入您的app.module:
@NgModule({
// ...
imports: [
// ...
ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production })
]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
跑步ng build --prod将为您提供所有其余的.
您可以在官方文档中找到有关服务工作者的更多信息.
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |