Inspiration DSH Web 原本是桌面端界面,手机上打开排版和导航没法用。灵感很直接:不改 DSH 本体、不动 FnOS Nginx 配置,用一个可装可卸的插件,让现成的 Web 界面在手机上能正常用。

What it does 把 DSH Web 适配到手机屏。安装后 820px 以下窄屏自动生效:窄屏 Bot 抽屉、移动尺寸的设置页和 Harness 详情页、通栏会话面板、安全区留白、触屏操作;820px 以上桌面布局原封不动。它独立于 ds-bot 插件,不想用了在插件管理器里禁用删除即还原。

How we built it 走 DSH 的客户端模块加载机制,源码是 CSS 和客户端行为,都在 src/ 里,client.js 由构建生成(npm run build,npm run check)。安装就是 npm pack 打包后 dsh plugin --profile web add,重启 DSH Web 即生效。关键两点:不修改任何 DSH 文件,不依赖 FnOS Nginx 配置。当前 0.1.1 版,Apache-2.0 开源。

Challenges we ran into 难在约束多,不在功能多:一是只在 820px 以下生效,窄屏规则不能漏到桌面布局上;二是不改 DSH 本体,只能在客户端模块加载机制里做适配;三是移动端得成套改,抽屉、详情页、安全区、触屏缺一个都不完整,还得保持 H5 原有的布局规则和导航行为,不能改出两套体验。

Accomplishments that we're proud of 一个插件包搞定整套移动端适配,装卸都干净;零侵入,不改 DSH 文件、不依赖 Nginx 配置;桌面端零影响;一天内从零做到可安装的 0.1.1。

What we learned 插件化适配比改本体更可持续,宿主升级不受影响;移动端适配是成套活,单改一两个页面等于没改;断点隔离是保住桌面体验的关键,窄屏规则只在窄屏生效。

What's next for niubi 覆盖更多窄屏页面和交互细节;跟进 DSH 后续版本保持兼容;继续打磨触屏手势和各类机型的显示效果。

里面挑战和下一步这两节是按仓库的设计约束顺写的,没有仓库之外的具体事迹,你要是有真实踩坑故事,替换进去更可信。

Built With

Share this project:

Updates

Submission history