我有一个Angular 8应用程序,可以与另一个应用程序一起使用(该应用程序的旧版本。我一直在开发新版本,并且它们应该继续协同工作)。我知道Angular具有路径前缀['/path1', '/path2', '/path3']
。用于api或旧版本应用程序的所有其他路径(例如['/api/*', '/*']
)。
我想使用Service Worker,并且Service Worker只是缓存Angular文件。
申请路线:
/path1/*
/path2/*
/path3/*
以及所有Angular源文件:
/index.html
/main.(_hash_).js
/common.(_hash_).js
/polyfills.(_hash_).js
... *(all prod compiled angular files)*
/assets/*
/oldApp
=>(对于旧版本,返回index.html)/*
=>(使用旧版本应用程序的所有文件和api)/api/*
=>(对于Angular API)我知道,它很复杂,但是我只能更改Angular应用程序。
我最后使用了这个 ngsw.config.json ,但是它也不起作用。
{
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"/*.css",
"/*.js",
]
}
},
{
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
]
}
}
],
"dataGroups": [
{
"name": "oldApp",
"urls": [
"/oldApp/**",
"/**"
],
"cacheConfig": {
"max-size": 0,
"maxAge": "0u",
"strategy": "freshness"
}
},
{
"name": "api",
"urls": [
"/api/**"
],
"cacheConfig": {
"max-size": 0,
"maxAge": "0u",
"strategy": "freshness"
}
}
]
}
对不起,我的英语不好。
答案 0 :(得分:0)
我写了自己的服务工作者脚本。首先,我编写了在编译后运行的脚本。该脚本读取所有编译的文件名并创建新的Service Worker js文件。其次,我在Angular中编写了RegisterSWService
。 RegisterSWService
注册文件,在编译后创建。