Garfish.loader
Garfish.loadApp
底层使用 Garfish.loader
来进行资源加载,因此可以通过 Garfish.loader
来添加资源加载过程中的回调以及资源的缓存策略
Garfish.loader
Garfish.loader
是 Garfish
实例上的属性,由 Garfish
加载器提供。该属性上提供加载资源、缓存、解析能力,可以通过 Garfish.loader
上的属性可控制资源的加载策略和缓存策略。
Type
interface Garfish {
loader: LoaderInterface;
}
interface LoaderLifecycle{
fetch: (string, RequestInit)=> Promise<Response> | void | undefined
}
interface LoaderInterface {
setLifeCycle: (lifeCycle: Partial<LoaderLifecycle>)=> void;
}
Garfish.loader.setLifeCycle
可设置 Garfish.loader
在资源加载过程中的处理逻辑
Type
(lifeCycle: Partial<LoaderLifecycle>)=> void;
参数
options
fetch?
- Type: LoaderLifecycle['fetch']
- 入参: Parameters<LoaderLifecycle['fetch']>
- 返回值: ReturnType<LoaderLifecycle['fetch']>
- 示例
import Garfish from 'garfish';
Garfish.registerApp({
name: 'react',
entry: 'http://localhost:3000/index.js'
})
// 设置 loader 的 fetch hook 返回值
// 在 Garfish 调用 http://localhost:3000/index.js 地址时,返回指定的 Response 内容
// 其他情况不处理,交由原生 fetch 发起请求
Garfish.loader.setLifeCycle({
fetch: function(url) {
if (url === 'http://localhost:3000/index.js') {
return Promise.resolve(new Response(`
console.log('hello world');
`, {
status: 200,
headers: {
'content-type': 'application/json',
},
}))
},
},
})
说明
fetch
可以在失败重试、资源自定义缓存读取等场景中使用- 使用自定义
fetch
可以针对特定的资源进行自定义内容返回,当返回的内容为Promise<Response>
实例时, Garfish 内部将不再发起fetch
,若返回的内容为其他类型的值将继续通过原生fetch
请求资源 - 返回的
Response
实例,需要携带status
和content-type
, 若未正确携带资源类型,Garfish
可能无法正确识别出资源的类型