关键是以可感知的运行时状态配合预设断点常量协同驱动路由分发:1.用断点常量匹配窗口宽度并注入路由参数;2.用设备类型常量做路由跳转分发;3.用分页策略常量绑定窗口变化触发重载;4.用折叠状态常量辅助区域路由分发。

在 H5 瀑布流中实现后端分页路由与动态窗口探测,关键不是“用常量捕获动态”,而是用**可感知的运行时状态 + 预设断点常量**协同驱动路由分发逻辑。所谓“常量”,实际指预定义的断点阈值(如 sm: 320, md: 600)、设备类型标识('mobile'/'tablet')、或分页策略标识('cursor'/'page'),它们本身不变,但被用来判断和匹配当前真实窗口状态。
1. 用断点常量驱动路由参数注入
将预设断点作为配置常量,在路由守卫或页面初始化时读取当前窗口宽度,匹配对应断点,再把该断点标识作为 query 或 meta 注入路由,供后端接口识别设备形态:
- 定义统一断点常量(如
const BREAKPOINTS = { xs: 0, sm: 320, md: 600, lg: 840, xl: 1440 }) - 在
router.beforeEach中计算当前断点:const bp = Object.keys(BREAKPOINTS).find(key => window.innerWidth >= BREAKPOINTS[key]).slice(-2)(简化示意) - 将
bp作为路由 query 透传:例如/api/items?breakpoint=lg&page=2,后端据此调整默认每页条数或返回字段粒度
2. 利用设备类型常量做路由跳转分发
通过 UA 或 window.matchMedia 判断设备类型,结合常量枚举做路由重定向,确保瀑布流请求走对应适配通道:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 定义设备类型常量:
const DEVICE_TYPE = { MOBILE: 'mobile', TABLET: 'tablet', DESKTOP: 'desktop' } - 检测逻辑示例:
const type = /iPad|Android|iPhone/.test(navigator.userAgent) ? DEVICE_TYPE.MOBILE : window.matchMedia('(min-width: 768px)').matches ? DEVICE_TYPE.TABLET : DEVICE_TYPE.DESKTOP - 路由配置中使用:
redirect: `/list?device=${type}`,后端接口根据device参数决定是否启用图片懒加载、是否压缩缩略图尺寸等
3. 分页模式常量绑定窗口变化监听
瀑布流的分页方式(游标分页 or 页码分页)应与窗口形态解耦,但可通过常量声明策略,并在窗口 resize 后触发重载逻辑:
- 定义分页策略常量:
const PAGINATION_STRATEGY = { CURSOR: 'cursor', PAGE: 'page' } - 监听
window.resize,当检测到断点跨越(如从md进入lg),清空本地游标缓存、重置page=1,并按新策略发起首屏请求 - 后端路由可设计为支持双模式:
/api/feed?strategy=cursor&after_id=xxx或/api/feed?strategy=page&page=3,前端只传策略常量 + 对应参数
4. 折叠屏场景下用 segment 常量辅助区域路由
对折叠屏设备,window.getWindowSegments() 返回的 segments 是动态的,但其数量(1 或 ≥2)和典型宽度范围(如左屏≈600px)可抽象为有限常量组合,用于路由分发:
- 预设折叠状态常量:
const FOLD_STATE = { SINGLE: 'single', DOUBLED: 'doubled', TRIPLED: 'tripled' } - 在页面 mounted 时调用
getWindowSegments(),根据segments.length映射为对应常量 - 将该状态写入路由 meta 或全局 store,瀑布流组件据此决定:单屏走垂直流式加载,双屏则左侧拉取分类导航、右侧拉取主列表,路由自动分发至不同数据接口


















