vite-plugin-preloader 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -246
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 🚀 vite-plugin-preloader
|
|
2
2
|
|
|
3
|
-
> 治好你的"页面加载焦虑症"
|
|
3
|
+
> 治好你的"页面加载焦虑症"——精确控制指定路由的预加载时机,在用户点击之前静默预取重型页面,让组件切换瞬间响应。
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/vite-plugin-preloader)
|
|
6
6
|
[](https://vitejs.dev)
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
- 📅 打开日历组件,echarts 慢慢加载
|
|
12
12
|
- 💸 用户等不及直接关闭页面
|
|
13
13
|
|
|
14
|
-
**别再让用户等待了!** 这个插件在构建阶段将路由组件映射到真实 chunk
|
|
14
|
+
**别再让用户等待了!** 这个插件在构建阶段将路由组件映射到真实 chunk,向 HTML 注入 `<link rel="prefetch">` 标签,浏览器空闲时自动拉取目标资源;配合状态 UI 和调试工具,帮你精确控制哪些页面需要提前预取、哪些不需要。
|
|
15
15
|
|
|
16
16
|
## ⚡ 效果对比
|
|
17
17
|
|
|
@@ -191,248 +191,5 @@ HTML 处理时(transformIndexHtml hook):
|
|
|
191
191
|
- **[升级]** TypeScript 类型定义与实现完全对齐
|
|
192
192
|
|
|
193
193
|
### v1.1.x(历史)
|
|
194
|
-
-
|
|
194
|
+
- 早期版本,使用运行时动态 `import()` 预加载方式,开创了按优先级精细化路由预加载的配置模式
|
|
195
195
|
|
|
196
|
-
|
|
197
|
-
> 治好你的"页面加载焦虑症",一行配置让路由秒开!
|
|
198
|
-
|
|
199
|
-
你是否经历过这样的痛苦:
|
|
200
|
-
- 📊 点击图表页面,转圈3秒才显示
|
|
201
|
-
- 📅 打开日历组件,echarts 慢慢加载
|
|
202
|
-
- 💸 用户等不及直接关闭页面
|
|
203
|
-
|
|
204
|
-
**别再让用户等待了!** 这个插件帮你在用户点击之前,悄悄把页面预加载好。
|
|
205
|
-
|
|
206
|
-
## ⚡ 效果对比
|
|
207
|
-
|
|
208
|
-
```
|
|
209
|
-
❌ 没有预加载:点击 → 等待 3s → 页面显示
|
|
210
|
-
✅ 使用预加载:点击 → 瞬间显示 🎉
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
## 🎯 核心特性
|
|
214
|
-
|
|
215
|
-
- **🛠️ 零侵入** - 不改业务代码,只在 `vite.config.js` 配置
|
|
216
|
-
- **⚡ 真的快** - 构建时生成代码,运行时零开销
|
|
217
|
-
- **🧠 够聪明** - 按优先级预加载,不会卡住首页
|
|
218
|
-
- **🔍 能调试** - 开发环境提供完整的调试工具
|
|
219
|
-
- **📦 很轻量** - 核心代码不到 200 行
|
|
220
|
-
|
|
221
|
-
## 📦 5秒安装
|
|
222
|
-
|
|
223
|
-
```bash
|
|
224
|
-
npm i vite-plugin-preloader -D
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
## 🚀 30秒配置
|
|
228
|
-
|
|
229
|
-
### 懒人模式(推荐)
|
|
230
|
-
```js
|
|
231
|
-
// vite.config.js
|
|
232
|
-
import preloader from 'vite-plugin-preloader'
|
|
233
|
-
|
|
234
|
-
export default defineConfig({
|
|
235
|
-
plugins: [
|
|
236
|
-
vue(),
|
|
237
|
-
preloader({
|
|
238
|
-
routes: [
|
|
239
|
-
'/dashboard',
|
|
240
|
-
'/charts',
|
|
241
|
-
'/calendar'
|
|
242
|
-
]
|
|
243
|
-
})
|
|
244
|
-
]
|
|
245
|
-
})
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
### 精细化配置
|
|
249
|
-
```js
|
|
250
|
-
preloader({
|
|
251
|
-
routes: [
|
|
252
|
-
{ path: '/dashboard', reason: '主页面,必须快', priority: 1 },
|
|
253
|
-
{ path: '/charts', reason: 'echarts 太重了', priority: 2 },
|
|
254
|
-
{ path: '/calendar', reason: 'fullcalendar 500KB', priority: 3 }
|
|
255
|
-
],
|
|
256
|
-
delay: 1000,
|
|
257
|
-
debug: true
|
|
258
|
-
})
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
**就这样!** 不需要改任何业务代码,插件会自动干活:
|
|
262
|
-
|
|
263
|
-
1. 🕐 页面加载完成 2 秒后开始预加载
|
|
264
|
-
2. 📊 按优先级依次加载组件
|
|
265
|
-
3. 🎨 右下角显示加载进度
|
|
266
|
-
4. ✅ 完成后用户点击秒开
|
|
267
|
-
|
|
268
|
-
## 💡 实际使用场景
|
|
269
|
-
|
|
270
|
-
### 真实案例(来自你的项目)
|
|
271
|
-
```js
|
|
272
|
-
preloader({
|
|
273
|
-
routes: [
|
|
274
|
-
'/demo/13-calendar', // 📅 日历组件
|
|
275
|
-
'/demo/29-antv-x6-editor', // 🎨 流程图编辑器
|
|
276
|
-
'/demo/16-text-editor', // 📝 富文本编辑器
|
|
277
|
-
'/demo/33-v-table-gantt', // 📊 甘特图组件
|
|
278
|
-
'/demo/20-dragable', // 🔄 拖拽组件
|
|
279
|
-
// 后续还觉得哪些页面初次切换等待时间长,添加到预加载里面来耍
|
|
280
|
-
]
|
|
281
|
-
})
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
### 其他常见场景
|
|
285
|
-
```js
|
|
286
|
-
// 你的痛点:图表页面巨慢
|
|
287
|
-
{
|
|
288
|
-
path: '/analytics',
|
|
289
|
-
reason: 'echarts + d3.js 组合拳,800KB+',
|
|
290
|
-
priority: 1 // 优先加载
|
|
291
|
-
}
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
### 场景2:电商平台
|
|
295
|
-
```js
|
|
296
|
-
// 你的痛点:商品详情页组件多
|
|
297
|
-
{
|
|
298
|
-
path: '/product/:id',
|
|
299
|
-
reason: '图片轮播 + 评价组件 + 推荐算法',
|
|
300
|
-
priority: 2
|
|
301
|
-
}
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
### 场景3:文档系统
|
|
305
|
-
```js
|
|
306
|
-
// 你的痛点:Markdown 编辑器启动慢
|
|
307
|
-
{
|
|
308
|
-
path: '/editor',
|
|
309
|
-
reason: 'Monaco Editor + 语法高亮插件',
|
|
310
|
-
priority: 1
|
|
311
|
-
}
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
## 🎨 看得见的效果
|
|
315
|
-
|
|
316
|
-
控制台会实时显示预加载进度:
|
|
317
|
-
|
|
318
|
-
```
|
|
319
|
-
🚀 [预加载] 开始预加载 3 个页面
|
|
320
|
-
✅ [预加载] /dashboard (156ms) - 主页面,必须快
|
|
321
|
-
✅ [预加载] /charts (445ms) - echarts 太重了
|
|
322
|
-
✅ [预加载] /calendar (332ms) - fullcalendar 500KB
|
|
323
|
-
🎉 [预加载] 完成! 总耗时 1.2s,为用户省了 3s 等待
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
页面右下角显示状态:
|
|
327
|
-
```
|
|
328
|
-
🔄 正在优化页面... 2/3
|
|
329
|
-
```
|
|
330
|
-
|
|
331
|
-
## 🛠️ 调试神器
|
|
332
|
-
|
|
333
|
-
开发环境下,按 F12 试试这些命令:
|
|
334
|
-
|
|
335
|
-
```js
|
|
336
|
-
// 看看预加载了啥
|
|
337
|
-
preloaderDebug.stats()
|
|
338
|
-
// 输出: { completed: 3, failed: 0, preloadedPaths: ['/dashboard', '/charts'] }
|
|
339
|
-
|
|
340
|
-
// 检查某个页面状态
|
|
341
|
-
preloaderDebug.check('/dashboard')
|
|
342
|
-
// 输出: true (已预加载)
|
|
343
|
-
|
|
344
|
-
// 手动重新预加载
|
|
345
|
-
preloaderDebug.restart()
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
## ⚙️ 完整配置
|
|
349
|
-
|
|
350
|
-
```js
|
|
351
|
-
preloader({
|
|
352
|
-
routes: [
|
|
353
|
-
{
|
|
354
|
-
path: '/heavy-page',
|
|
355
|
-
component: '@/views/heavy/index.vue', // 可选,不填自动推断
|
|
356
|
-
reason: '这页面有点重,提前加载', // 可选,但建议写
|
|
357
|
-
priority: 1 // 数字越小越先加载
|
|
358
|
-
}
|
|
359
|
-
],
|
|
360
|
-
delay: 2000, // 等主页面稳定后再开始
|
|
361
|
-
showStatus: true, // 显示加载状态
|
|
362
|
-
statusPosition: 'bottom-right', // 状态显示位置
|
|
363
|
-
debug: true // 开发环境显示详细日志
|
|
364
|
-
})
|
|
365
|
-
```
|
|
366
|
-
|
|
367
|
-
## 🎯 配置说明
|
|
368
|
-
|
|
369
|
-
| 配置项 | 说明 | 默认值 | 建议 |
|
|
370
|
-
|--------|------|--------|------|
|
|
371
|
-
| `routes` | 要预加载的路由 | `[]` | 选择最重要的 3-5 个页面 |
|
|
372
|
-
| `delay` | 延迟开始时间(ms) | `2000` | 给首页留点时间 |
|
|
373
|
-
| `showStatus` | 是否显示状态 | `true` | 开发时建议打开 |
|
|
374
|
-
| `debug` | 调试模式 | `false` | 开发时建议打开 |
|
|
375
|
-
|
|
376
|
-
## 💰 投入产出分析
|
|
377
|
-
|
|
378
|
-
**投入:** 5分钟配置
|
|
379
|
-
**产出:**
|
|
380
|
-
- ⚡ 页面打开速度提升 50%-80%
|
|
381
|
-
- 😊 用户体验显著改善
|
|
382
|
-
- 📈 页面跳出率降低
|
|
383
|
-
- 🎯 核心页面访问率提升
|
|
384
|
-
|
|
385
|
-
## 🚨 注意事项
|
|
386
|
-
|
|
387
|
-
**什么页面适合预加载?**
|
|
388
|
-
- ✅ 用户经常访问的页面
|
|
389
|
-
- ✅ 包含大型组件库的页面
|
|
390
|
-
- ✅ 首屏之后的核心流程页面
|
|
391
|
-
|
|
392
|
-
**什么页面不建议预加载?**
|
|
393
|
-
- ❌ 很少访问的管理页面
|
|
394
|
-
- ❌ 需要权限验证的敏感页面
|
|
395
|
-
- ❌ 包含大量图片/视频的页面
|
|
396
|
-
|
|
397
|
-
## 🔧 工作原理(技术向)
|
|
398
|
-
|
|
399
|
-
1. **构建时魔法** - 扫描你的配置,生成预加载代码
|
|
400
|
-
2. **虚拟模块注入** - 创建 `virtual:preloader` 模块自动导入
|
|
401
|
-
3. **智能调度** - 按优先级串行加载,不抢占主线程
|
|
402
|
-
4. **内存缓存** - 组件加载后直接缓存,点击时秒开
|
|
403
|
-
|
|
404
|
-
## 🤔 常见问题
|
|
405
|
-
|
|
406
|
-
**Q: 会不会影响首页加载速度?**
|
|
407
|
-
A: 不会!默认等待 2 秒后才开始,而且是后台异步进行
|
|
408
|
-
|
|
409
|
-
**Q: 预加载失败怎么办?**
|
|
410
|
-
A: 不影响正常使用,用户点击时还是会正常加载
|
|
411
|
-
|
|
412
|
-
**Q: 支持动态路由吗?**
|
|
413
|
-
A: 支持!比如 `/user/:id` 这样的路由也能预加载
|
|
414
|
-
|
|
415
|
-
**Q: 打包后代码会变大吗?**
|
|
416
|
-
A: 几乎不会,生成的运行时代码很小,而且会被 tree-shake
|
|
417
|
-
|
|
418
|
-
## 🎉 用户反馈
|
|
419
|
-
|
|
420
|
-
> "我们的 BI 后台原来打开图表页面要 3 秒,现在瞬开!老板都夸我了 😄"
|
|
421
|
-
> —— 某厂前端开发
|
|
422
|
-
|
|
423
|
-
> "电商系统的商品页面现在丝滑如德芙,用户留存率提升了 15%"
|
|
424
|
-
> —— 电商公司 CTO
|
|
425
|
-
|
|
426
|
-
## 🚀 立即开始
|
|
427
|
-
|
|
428
|
-
```bash
|
|
429
|
-
npm i vite-plugin-preloader -D
|
|
430
|
-
```
|
|
431
|
-
|
|
432
|
-
然后在 `vite.config.js` 里加几行配置,让你的应用飞起来!
|
|
433
|
-
|
|
434
|
-
---
|
|
435
|
-
|
|
436
|
-
**让等待成为过去式,让用户爱上你的应用!** ⚡
|
|
437
|
-
|
|
438
|
-
*如果这个插件帮到你了,给个 ⭐ 支持一下吧~*
|