CrossDep

双期函数依赖

  运行时和编译期的函数依赖,其中的内容会被写入到 sw 中。

  该配置项用于放置所有同时在浏览器和 NodeJs 环境下执行的工具函数。

  对于每一项配置 <KEY>: { <runOnBrowser>, <runOnNode> }<KEY> 是函数名,<runOnBrowser> 是在浏览器环境下执行的代码,<runOnNode> 是在 NodeJs 环境下执行的代码。

  对于在浏览器环境下执行的代码,可以像 RuntimeDep 一样引用其它运行时的环境变量、依赖函数等内容。

  对于在 NodeJs 环境下执行的代码,可以使用 this 调用 <runOnBrowser>(前提是 <runOnBrowser> 中没有依赖浏览器环境的代码)。

  <runOnBrowser><runOnNode> 中的代码的行为应当完全一致。注意:此处说的行为一致是两者应当产生相同的副作用,内部具体实现可以不一样。

  例:

import {defineCrossDep} from 'swpp-backends'
 
defineCrossDep({
    example: {  // 不推荐!双端的行为不完全一致!但如果是为了进行代码测试,可以临时这么干。
        runOnBrowser: () => console.log('hello'),
        runOnNode: () => console.log('world')
    },
    invokeExample: {
        runOnBrowser: () => console.log('hello world'),
        runOnNode() {
            this.runOnBrowser()
        }
    }
})

matchCacheRule

类型说明默认值
(url: URL) => number | false | null | undefined判断一个资源是否需要缓存() => false

  该项用于判断一个资源是否需要被前端缓存,其中各个返回值的含义如下:

  • false null undefined0:表示不需要缓存
  • 正数:表示需要缓存,缓存类型为定时缓存,单位为毫秒,超过指定时间后缓存自动失效
  • 负数:表示需要缓存,缓存类型为永久缓存,仅能通过增量更新失效

normalizeUrl

类型说明默认值
(url: string) => string归一化 URL省略

  该项用于将链接进行归一化,归一化的作用是防止目标相同但连接形式不同的资源被重复缓存。默认的实现会对 HTML 资源的 URL 进行处理:

  • 如果链接以 /index.html 结尾会被替换为 /
  • 如果链接以 /xxx.html 结尾会被替换为 /xxx
  • 否则保持原链接

matchUpdateRule

类型说明默认值
(exp: UpdateChangeExp) => ((url: string) => boolean | undefined | null)匹配缓存更新规则省略

  该项用于判断一个 UpdateChangeExp 应当如何被程序理解,返回一个函数,该函数用于判断指定资源是否应该被刷新。

  内置的规则已经可以满足大多数情况的要求,一般只有需要自定义新的规则时才需要修改该项,具体的实现可以参考 源代码 (opens in a new tab)