pre-fetch-plugin
Version:
A pre-fetch plugin for Vite and Webpack
123 lines (97 loc) • 3.42 kB
Markdown
# Pre-Fetch Plugin
Pre-Fetch Plugin 是一个为 Vite 和 Webpack 设计的插件,用于在页面加载时预先获取数据,从而提高应用性能。
## 安装
使用 npm 安装插件:
```bash
npm install pre-fetch-plugin
```
## 使用方法
### Vite
在您的 `vite.config.ts` 文件中:
```typescript
import { defineConfig } from 'vite';
import { createVitePlugin } from 'pre-fetch-plugin';
export default defineConfig({
plugins: [
createVitePlugin({
options: [
{
pathList: ['/home', '/user'],
hashList: ['all'],
reqs: [
{
key: 'userInfo',
method: 'GET',
url: '/api/user',
queryParams: { id: 'userId' },
cookieParams: { token: 'authToken' },
staticParams: { version: '1.0' }
}
]
}
]
})
]
});
```
### Webpack
在您的 `webpack.config.js` 文件中:
```javascript
const { WebpackPreFetchPlugin } = require('pre-fetch-plugin');
module.exports = {
// ... 其他配置
plugins: [
new WebpackPreFetchPlugin({
options: [
{
pathList: ['/home', '/user'],
hashList: ['all'],
reqs: [
{
key: 'userInfo',
method: 'GET',
url: '/api/user',
queryParams: { id: 'userId' },
cookieParams: { token: 'authToken' },
staticParams: { version: '1.0' }
}
]
}
]
})
]
};
```
## 配置选项
插件接受一个 `options` 数组,每个选项包含以下字段:
- `pathList`: 匹配的路径列表。使用 `['all']` 匹配所有路径。
- `hashList`: 匹配的 hash 列表。使用 `['all']` 匹配所有 hash。
- `reqs`: 预加载请求的配置数组。
每个请求配置包含以下字段:
- `key`: 用于存储结果的键名。
- `method`: HTTP 方法(GET 或 POST)。
- `url`: 请求的 URL。
- `queryParams`: URL 查询参数。
- `cookieParams`: 从 cookie 中获取的参数。
- `staticParams`: 静态参数。
参数优先级:queryParams > cookieParams > staticParams
## 在应用中使用预加载数据
插件会在全局对象上添加一个 `getPreFetchResult` 方法。您可以在应用代码中使用这个方法来获取预加载的数据:
```javascript
async function fetchSomeData(key) {
const preFetchResult = await window.getPreFetchResult(key);
if (preFetchResult) {
return preFetchResult;
} else {
// 如果没有预加载结果,执行正常的请求逻辑
return await normalFetchFunction();
}
}
```
## 注意事项
1. 预加载脚本会异步加载,不会阻塞 DOM 解析。
2. 确保在使用预加载数据之前,相关的 DOM 元素已经加载完成。
3. 预加载请求会并行执行,以提高性能。
4. 如果预加载请求失败,插件会在控制台输出错误信息,但不会影响页面的正常加载。
## 许可证
MIT